从命令行将 NMock 与 NUnit 一起使用时获取 System.TypeLoadException
本文关键字:获取 System TypeLoadException 一起 命令行 NMock NUnit | 更新日期: 2023-09-27 18:33:21
我正在尝试运行一些使用 NMock2 进行模拟的 NUnit 测试。这些测试将在生成过程中从生成文件运行。但是,测试无法加载。我可以在 Monodevelopment 中获取所有工作 - 只是似乎无法从命令行正确获取它。
这是我大幅简化的源代码:
using System;
using NUnit.Framework;
using NMock2;
[TestFixture]
public class DataConversionTests {
NMock2.Mockery mock;
[SetUp]
public void SetUp() {}
[Test]
public void CheckKey() {}
}
以下是我如何通过 Makefile 构建测试:
all: test
clean:
find . -name "*.dll" -delete
LIBS=-lib:/path/to/nmock2/bin/ -r:NMock2.dll -r:NUnit.Framework.dll
Tests.dll : DataConversionTests.cs
gmcs -out:Tests.dll -debug -target:library DataConversionTests.cs $(LIBS)
test : Tests.dll
nunit-console Tests.dll
这是我得到的输出:
DataConversionTests.cs(8,24): warning CS0169: The private field `DataConversionTests.mock' is never used
Compilation succeeded - 1 warning(s)
nunit-console Tests.dll
NUnit version 2.4.8
Copyright (C) 2002-2007 Charlie Poole.
Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.
Copyright (C) 2000-2002 Philip Craig.
All Rights Reserved.
Runtime Environment -
OS Version: Unix 9.8.0.0
CLR Version: 2.0.50727.1433 ( 2.10.9 (tarball Tue Apr 17 18:59:12 EDT 2012) )
.F
Tests run: 1, Failures: 1, Not run: 0, Time: 0.048 seconds
Test Fixture SetUp Failures:
1) DataConversionTests : System.TypeLoadException : Could not load type 'DataConversionTests' from assembly 'Tests, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
at System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0014a] in /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/corlib/System.Reflection/MonoMethod.cs:538
at System.Reflection.MonoCMethod.Invoke (BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/corlib/System.Reflection/MonoMethod.cs:541
at System.Reflection.ConstructorInfo.Invoke (System.Object[] parameters) [0x0000e] in /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/corlib/System.Reflection/ConstructorInfo.cs:62
at NUnit.Core.Reflect.Construct (System.Type type) [0x00023] in /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/nunit24/NUnitCore/core/Reflect.cs:387
Test Case Failures:
1) DataConversionTests.CheckKey : TestFixtureSetUp failed in DataConversionTests
我显然弄错了一些简单的错误,但我就是看不出它是什么。我需要更改什么才能完成这项工作?
如果我将NMock2.dll
复制到本地目录中并且不使用它的路径,那么 nunit 似乎发现它没问题,并且测试通过。
这是由于注意到将成员变量从类移动到方法中会将 nunit 消息更改为无法打开或加载指定文件的内容而提示的。
我想避免复制这个dll,所以如果有人有更好的解决方案,我会接受的。