【问题标题】:Force MonoDevelop to 'Run Tests' under a specific runtime强制 MonoDevelop 在特定运行时“运行测试”
【发布时间】:2010-11-12 23:37:38
【问题描述】:

我们的一堆单元测试在 OS X 上的 Mono 下失败,并出现以下错误:

System.TypeLoadException : 无法从程序集 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 加载类型 'System.Func``2'。

关于有问题的单元测试:

[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);
}

运行 Mono 2.8,使用 MonoDevelop 2.4。

有人有解决此问题的建议吗?

编辑:

应该指出此错误来自 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

所有测试通过

【问题讨论】:

    标签: c# unit-testing mono monodevelop


    【解决方案1】:

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


    第二次尝试:

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

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

    mono --runtime=v4.0.30319 mytests.exe

    【讨论】:

    • 抱歉 - 这是一个错字,无法从 MonoDevelop 复制/粘贴 - 很好 ;)
    • 它是一个库,但我添加了一个控制台应用程序,并引用了测试,调用了 Main(...) 形式的测试方法,它运行良好。也许 MD 中的“运行测试”没有在 4.0 下运行?我将编辑问题以更具体地说明这一点。
    • 从控制台运行 NUnit 时覆盖框架按预期工作。我再次用更多细节更新了这个问题。
    • 听起来像是需要在 MonoDevelop 上提交一个错误。
    • 我的 Mono 安装可能也有问题 - 现在 xsp 也有奇怪的问题。重新安装,之后会重新评估。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多