强制MonoDevelop在特定运行时下“运行测试”

时间:2010-11-12 23:37:39

标签: c# unit-testing mono monodevelop

我们的单元测试堆在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

所有测试都通过

1 个答案:

答案 0 :(得分:6)

没有一个名为“mscorelib”的程序集,它是“mscorlib”。那是一个错字吗?还是一个破碎的参考?


第二次尝试:

您确定您的测试是针对4.0(dmcs)进行编译的吗?

您还可以尝试使用以下命令覆盖运行时:

mono --runtime = v4.0.30319 mytests.exe