Tôi duyệt qua vài vấn đề về studio và nunit được ghi trên stackoverflow, nhưng không thể tìm thấy bất kỳ chủ đề nào phù hợp với trường hợp của tôi.NUnit C# Test Project tham khảo các DLL khác
Tôi đang sử dụng NUnit để kiểm tra một số mã tôi đã viết, tôi đang tải tệp * .csproj của dự án thử nghiệm của tôi vào Công cụ GUI NUnit.
Tôi đã tìm ra vấn đề tôi đoán nhưng tôi không có giải pháp cho đến nay. Tôi đang làm gì:
Tôi tham chiếu 2 dự án khác đều là dự án dll. Điều này có nghĩa là tôi có 3 dự án: TestProject (DLL), SettingsManager (DLL), DatabaseInterface (DLL). Tất cả đều nằm trong một giải pháp. Dự án DatabaseInterface chứa các lời gọi api nguyên bản đến một cuộc gọi khác, C++ x86, DLL, nhưng không tham chiếu rõ ràng DLL này thông qua câu lệnh "using".
Một trong hai thiết bị này là Trình quản lý cài đặt, lưu trữ một số dữ liệu cấu hình như đường dẫn &, v.v. Cả hai, Testproject cũng như DatabaseInterface đều tham chiếu đến SettingsManager.
Tất cả 3 dự án đều được xây dựng trong "Gỡ lỗi" và trong "AnyCPU". Tham chiếu & chỉ sử dụng Trình quản lý cài đặt trong TestProject của tôi hoạt động tốt nhưng khi tôi thêm DatabaseInterface, tôi nhận được một BadImageFormatException cho biết rằng nó đang cố tải một tệp có định dạng sai.
Để làm cho nó rõ ràng hơn, đó là làm việc:
using myNamespace.Settings; // contains SettingsManager
using System;
using NUnit.Framework;
namespace myNamespace.myTestProject
{
[TestFixture]
public class TestProject
{
[SetUp]
public void SetUp()
{
}
[Test]
public void ReadDbFile()
{
string s = SettingsManager.DbFile; // gets the path of the db file
}
}
}
NUnit Output:
này không hoạt động:
using myNamespace.Settings; // contains SettingsManager
using myNamespace.DbInterface; // contains DatabaseInterface, which contains native calls to C++ dll
using System;
using NUnit.Framework;
namespace myNamespace.myTestProject
{
[TestFixture]
public class TestProject
{
DatabaseInterface instance = null;
[SetUp]
public void SetUp()
{
}
[Test]
public void ReadDbFile()
{
string s = SettingsManager.DbFile; // gets the path of the db file
}
}
}
Các thử thứ hai, chứa
using myNamespace.DbInterface;
ném myNamespace.myTestProject.TestProject (TestFixtureSetUp): Thiết lập: System.BadImageFormatException: Die Datei oder Assembly "DatabaseInterface, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null" hoặc không tìm thấy tham chiếu. Nó đã được thử nghiệm để tải một tập tin của một định dạng sai ".
ngay cả khi tất cả 3 dự án đang xây dựng sử dụng gỡ lỗi và AnyCPU.
Tôi đang sử dụng một tiêu chuẩn * .config tập tin, như Một trong những dự án NUnit Testproject Có lẽ một số là sai với điều này
Có ai gặp phải lỗi tương tự đang cố gắng tải mã từ một DLL khác cho đến bây giờ không? Có thể là một vấn đề mà cả hai dự án (Test & Database) tham khảo Cài đặtQuản lý DLL? Tôi có làm điều gì đó sai lớn?
Tôi đã kiểm tra kỹ cấu hình xây dựng của mình trong cả 3 dự án nhưng không thể tìm thấy bất kỳ cài đặt nào có thể sai và giải thích BadImageFormatException.
có lẽ đó là vấn đề tôi đoán. Bởi vì tôi đang sử dụng một 64 bit Win7 tất cả mọi thứ có nghĩa là "AnyCPU" sẽ là 64Bit sau đó. Đó là lỗi với DatabaseInterface DLL được biên dịch 32 bit. – inva