2012-02-28 15 views
14

Theo truyền thống, nunit-console.exe đã được bao gồm trong kho lưu trữ và trên máy chủ xây dựng (hoặc bất kỳ máy nào khác), EXE này được gọi từ một số tập lệnh xây dựng.Làm thế nào để thực hiện kiểm tra NUnit bằng cách sử dụng gói NUnit.Runners và psake?

Bây giờ, NUnit.Runners package có sẵn Tôi tự hỏi làm thế nào điều này có thể được sử dụng từ một kịch bản xây dựng psake. Nó là một gói giải pháp cấp vì vậy nó không để lại bất kỳ dấu vết nào trong packages.config và không thể được khôi phục tự động như các gói cấp dự án khác, vì vậy tôi đoán là cần phải gọi Install-Package từ tập lệnh psake, chờ tải xuống và sau đó thực thi các bài kiểm tra đơn vị? Hy vọng rằng tải xuống này chỉ có thể chạy một lần và nó sẽ không làm chậm quá trình tải xuống mỗi khi nó chạy. Hay là nó?

+0

Vì vậy, theo như tôi hiểu nó một cách chính xác, bạn cần một nhiệm vụ kiểm tra xem các vận động viên được cài đặt và nếu không, nó chạy nuget và cài đặt các gói phần mềm? – stej

+1

Vâng, một cái gì đó như thế. (Lý tưởng nhất, các gói giải pháp nên có chức năng tự động khôi phục được xây dựng sẵn và tôi chỉ cần gọi nunit-console.exe ở đâu đó trong thư mục 'packages' nhưng có lẽ sẽ chỉ xuất hiện trong một số phiên bản tương lai của NuGet.) – Borek

+0

I không nhận thức được rằng các gói giải pháp tồn tại ở tất cả. Làm thế nào để bạn nhận dạng chúng? VS theo dõi NUnit.Runners đã được cài đặt như thế nào? – springy76

Trả lời

0

Điều này không trả lời câu hỏi của bạn, nhưng có thể được sử dụng cho người nào đó đang gặp phải sự cố tương tự. Tôi chạy vào cùng một vấn đề cố gắng để thiết lập một TeamCity xây dựng. Tôi đã làm việc xung quanh điều này bằng cách trở lại phiên bản cũ hơn của nunit.

NUnit 2.5.10.11092 vẫn có phần tử nunit exe trong gói nuget.

8

Chỉ cần chạy vào chính bản thân mình. Rất dễ sửa chữa như sau:

  1. Tải phiên bản mới nhất của tiện ích Trình quản lý gói Nuget. Tôi đang trên 1,8 vào lúc này.
  2. Thêm gói Nunit.Runners để giải pháp của bạn
  3. Sao chép các yếu tố liên quan đến việc Á hậu từ packages.config dưới thư mục .nuget của bạn vào file packages.config của dự án thử nghiệm đơn vị của bạn

Từ bây giờ trên, khi bạn xây dựng, Nuget sẽ kéo xuống các gói Nunit.Runners nếu nó không có trên máy. Sau đó tôi tham khảo các Nunit Á hậu từ gói trong xây dựng dòng lệnh của tôi.

Tôi làm việc này trong một dự án nhỏ mà tôi đã làm cho một số TeamCity build light on Github. Packages.config trong dự án thử nghiệm đơn vị đã được sửa đổi như đã thảo luận ở trên. Bạn có thể xem tệp MSBuild để xem cách tôi chạy thử nghiệm từ dòng lệnh. (build.proj, tham chiếu một số mục tiêu và thuộc tính có trong thư mục tools \ msbuild của kho lưu trữ). Bạn sẽ cần trình quản lý gói Nuget mới nhất được cài đặt trước khi bạn cố gắng xây dựng trong VS.NET hoặc từ dòng lệnh (clicktobuild.bat).

Bạn sẽ có thể chuyển ý tưởng về cách chạy bàn điều khiển Nunit từ đúng vị trí vào psake khá dễ dàng.

+1

Liên kết tới "xây dựng ánh sáng trên Github" bị hỏng 404 :(, liên kết hoạt động https://github.com/SouthsideSoftware/BuildLight – roundcrisis

2

Tôi đã tạo một issue with nuget developers và đề xuất sửa chữa.

Sửa file nuget.targets với những thay đổi sau:

Trong <PropertyGroup Condition=" '$(OS)' == 'Windows_NT'"> thêm yếu tố này:

<SolutionLevelPackagesConfig>$([System.IO.Path]::Combine($(SolutionDir), ".nuget\packages.config"))</SolutionLevelPackagesConfig> 

Trong <PropertyGroup> thêm yếu tố này:

<RestoreSolutionLevelCommand>$(NuGetCommand) install "$(SolutionLevelPackagesConfig)" -source "$(PackageSources)" $(RequireConsentSwitch) -solutionDir "$(SolutionDir) "</RestoreSolutionLevelCommand> 

Trong <Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites"> thêm yếu tố này trước RestoreCommand cho WinNT:

<Exec Command="$(RestoreSolutionLevelCommand)" 
       LogStandardErrorAsError="true" 
       Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)') And Exists('$(SolutionLevelPackagesConfig)')" /> 

Điều này làm cho msbuild của tôi khôi phục các gói cấp giải pháp.