我们的单元测试堆在OS X上的Mono下失败,出现以下错误:
System.TypeLoadException : Could not load type 'System.Func``2' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
关于有问题的单元测试:
[Test]
public void CanAuthenticateValidUser()
{
const string testUsername = "jappleseed";
var repo = new Mock<IUserRepository>();
repo.Setup(x => x.GetByUsername(testUsername)).Returns(GetTestUser());
var authenticator = new Authenticator(repo.Object);
var result = authenticator.Authenticate(testUsername, "test");
Assert.That(result, Is.True);
}
使用MonoDevelop 2.4运行Mono 2.8。
有人有任何建议可以解决这个问题吗?
修改
应该指出这个错误来自MonoDevelop的“单元测试”板中内置的“运行测试”命令。
编辑2:
根据jpobst建议强制运行时在控制台中运行。我想问题是如何让MonoDevelop在特定框架下展示运行测试?
shimms:Debug shimms$ mono ~/Development/nunit/bin/net-2.0/nunit-console.exe Convergence.Core.Services.Tests.dll
然而,抛出相同的例外:
shimms:Debug shimms$ mono --runtime=v4.0.30319 ~/Development/nunit/bin/net-2.0/nunit-console.exe Convergence.Core.Services.Tests.dll
所有测试都通过
答案 0 :(得分:6)
没有一个名为“mscorelib”的程序集,它是“mscorlib”。那是一个错字吗?还是一个破碎的参考?
第二次尝试:
您确定您的测试是针对4.0(dmcs)进行编译的吗?
您还可以尝试使用以下命令覆盖运行时:
mono --runtime = v4.0.30319 mytests.exe