2009-02-08 27 views
5

Tôi đang học cách sử dụng NUnit. Tôi có dự án chính của tôi trong giải pháp của nó, và tạo ra một dự án riêng biệt trong cùng một giải pháp mà sẽ tổ chức các bài kiểm tra đơn vị của tôi, với không gian tên riêng của nó. Từ dự án đó, tôi thêm một tham chiếu đến dự án chính và thêm một sốTại sao tôi nhận được ngoại lệ FileNotFound khi tham chiếu một dự án khác từ cùng một giải pháp?

using MainProjectNamespace; 

lên đầu nó.

Khi tôi truy cập NUnit, mọi thử nghiệm mà tôi có không tham chiếu đến công việc chính của dự án. Đây là những bài kiểm tra tôi thiết lập chỉ để làm quen với NUnit, và khá là vô ích. Khi NUnit chạy các bài kiểm tra thực sự thử nghiệm ném ngoại lệ này:

TestLibrary.Test.TestMainProject: System.IO.FileNotFoundException: Không thể tải tập tin hoặc lắp ráp 'WpfApplication2, Version = 1.0.0.0, Văn hóa = trung lập, PublicKeyToken = null ' hoặc một trong các phụ thuộc của nó. Hệ thống không thể tìm thấy tệp được chỉ định.

Tại sao tôi nhận được ngoại lệ này?

EDIT:

Bây giờ khi tôi cố gắng để tải lắp ráp vào NUnit, nó sẽ thậm chí không tải (vì vậy tôi thậm chí không thể có được một cơ hội để chạy thử nghiệm)

Đây là ngoại lệ mà đến sup, và stack trace:

System.IO.DirectoryNotFoundException: không thể tìm thấy một phần của đường dẫn 'pATH DÀI ĐÂY tÔI kHÔNG muốn gõ'

System.IO.DirectoryNotFoundException... 

Server stack trace: 
    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    at System.IO.Directory.SetCurrentDirectory(String path) 
    at NUnit.Core.DirectorySwapper..ctor(String directoryName) 
    at NUnit.Core.Builders.TestAssemblyBuilder.Load(String path) 
    at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, Boolean autoSuites) 
    at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, String testName, Boolean autoSuites) 
    at NUnit.Core.TestSuiteBuilder.Build(TestPackage package) 
    at NUnit.Core.SimpleTestRunner.Load(TestPackage package) 
    at NUnit.Core.ProxyTestRunner.Load(TestPackage package) 
    at NUnit.Core.ProxyTestRunner.Load(TestPackage package) 
    at NUnit.Core.RemoteTestRunner.Load(TestPackage package) 
    at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) 
    at System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) 
    at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext) 

Exception rethrown at [0]: 
    at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 
    at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 
    at NUnit.Core.TestRunner.Load(TestPackage package) 
    at NUnit.Util.TestDomain.Load(TestPackage package) 
    at NUnit.Util.TestLoader.LoadTest(String testName) 

EDIT2: Đường dẫn trên rõ ràng IS trong ổ cứng của tôi

EDIT3: Tôi vừa chuyển từ Debug sang Release, trên NUnit và tải dll từ thư mục phát hành của TestingLibrary ... Và nó đã tải! 1 trong 3 thử nghiệm không gian tên cụ thể đã hoạt động. Bắt một nơi nào đó, tôi.

EDIT4: Welllllllll ... Tôi thực sự có thể chạy thử nghiệm ngay bây giờ, nhưng tôi quay trở lại lỗi ban đầu. CNTT không tìm thấy lắp ráp cho dự án chính

+0

Bạn có gặp sự cố với đường dẫn tương đối so với tuyệt đối không? – BobbyShaftoe

Trả lời

5

Trình biên dịch loại bỏ tất cả các tham chiếu không được sử dụng và không triển khai dll một cách không cần thiết. A using (tự nó) không được tính là sử dụng. Đánh dấu dll để triển khai thông qua cài đặt "Sao chép vào thư mục đầu ra" hoặc thêm một số mã thực sự sử dụng các loại được khai báo trong dll.

+0

Tôi có một số mã trong đó tạo ra một thể hiện mới của một lớp và làm một vài điều. Nhưng lỗi vẫn xuất hiện. –

+0

Ngoài ra, thuộc tính "Sao chép Địa phương" được đặt, cho biết tham chiếu sẽ được sao chép vào thư mục đầu ra hay không. –

+0

Marc, kiểm tra nhận xét mới của bạn. Tôi không thể làm điều này để làm việc, và bạn luôn có tất cả các câu trả lời ... –

0

Bạn đã đổi tên tên của tập hợp đầu ra HOẶC không gian tên trong dự án nguồn?

Có vẻ như tệp nguồn của bạn là "WPFApplication1" & Tôi đang suy đoán rằng bạn có thể đã thay đổi loại đầu ra từ dll thành exe?

+0

Tôi đã đổi tên một vài thứ khi tôi tạo dự án gốc, có lẽ điều này đã làm rối tung? Intellisense của dự án mới có thể tìm ra các loại đối tượng lớp tùy chỉnh của tôi, nhưng vì một số lý do nó gây rắc rối ... –

+0

Tôi đã đổi tên không gian tên cho chắc chắn. –

+0

OK. Xóa tham chiếu đến assembly từ "Tham khảo" (nó có thể hiển thị tham chiếu với dấu chấm than). Xây dựng dự án nguồn của bạn và thêm tham chiếu của nó vào dự án Thử nghiệm. – shahkalpesh

0

Dường như một trong các hội đồng bạn đang tham chiếu trong ứng dụng của bạn có phụ thuộc vào một hội đồng khác không có trong thư mục bin của bạn.

+1

Cảm ơn bạn đã trả lời. Tôi chỉ cần kiểm tra thư mục bin của tôi và cả hai thư mục con gỡ lỗi và phát hành chứa tất cả các tập tin mà TestLibrary của tôi phụ thuộc vào. Chẳng hạn như WpfApplication2.exe ... Bất kỳ ý tưởng nào khác? –

+0

Bạn đang cố gắng sử dụng giao diện điều khiển NUnit App? Nếu vậy, bạn đã thử TestDriven.net chưa? Tôi đã nhận được một lỗi tương tự một vài tuần trước đây, nhưng đó là vì tôi đã sử dụng một vài dự án mã nguồn mở khác nhau mà tất cả phụ thuộc vào một dự án khác, nhưng các phiên bản khác nhau. – RKitson

+0

TestDriven.NET có hoạt động với VS Express không? Tôi không thấy "Chạy thử nghiệm" –

1

Tôi gặp vấn đề tương tự và câu trả lời của RKitsons đã giúp tôi.

Về cơ bản tôi đã sao chép tất cả các dll mà dự án của tôi phụ thuộc vào cũng như nunit.framework.dll vào cùng thư mục ... obj/debug/THIS là một cách để thực hiện.

Phương pháp thanh lịch là thay đổi cấu hình dự án, trong Visual Studio, trong tab Xây dựng thành chế độ phát hành và nếu dự án được thiết lập chính xác, hãy sao chép tất cả các dll phụ thuộc vào thư mục "thoát" hoặc "phát hành" thích hợp.

Các vấn đề liên quan