我是NUnit的新手(实际上是一般的单元测试),我正在尝试为我正在处理的小事做一些测试。
我正在尝试为libspotify编写一个Wrapper库。
我尝试测试的一个例子是:
/// <summary>
/// The connection state of the specified session.
/// </summary>
/// <param name="sessionPtr">Pointer to Session object</param>
/// <returns>The connection state - see the ConnectionStateE enum for possible values</returns>
[DllImport("libspotify")]
internal static extern ConnectionStateE sp_session_connectionstate(IntPtr sessionPtr);
/// <summary>
/// The connection state of the session
/// </summary>
public ConnectionStateE GetConnectionState()
{
__CheckIsNotDisposed();
return sp_session_connectionstate(this.Ptr);
}
然后是测试本身(在一个单独的项目中,相同的解决方案)
[Test]
public void TestSessionInitializeDisconnected()
{
using (var sess = new Session())
{
Assert.AreEqual(sess.ConnectionState, myLibSpotify.Enums.ConnectionStateE.DISCONNECTED);
}
}
不可否认,这项测试可能不是最有用的,但目前这是无关紧要的。我遇到的问题是当我尝试运行测试时,NUnit向我展示了一个例外:
SpecTests.TestSessionBasics.TestSessionInitializeDisconnected:
System.BadImageFormatException : An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
我猜这里我忽略了一些东西,但googleing并没有真正帮助,因为我似乎只是为了测试c ++ / cli或其他不太有帮助的结果而找到了结果。
任何帮助将不胜感激。感谢。
答案 0 :(得分:0)
解决方法是运行NUnit的32位二进制文件而不是64位,这是x64机器上的默认值。
我使用的外部库的原因显然是针对x86(32位)编译的,因此无法很好地处理来自64位环境的代码调用。
正如@HansPassant所提到的,解决方案来自这个问题:nUnit Exception on a 64 bit Machine