强制nunit控制台运行程序使用CLR 4.5

时间:2014-11-19 14:15:17

标签: unit-testing nunit test-runner

我有以下简单的测试用例:

var uri = new Uri("http://foo.com/bar%2Fbaz");
Assert.AreEqual("http://foo.com/bar%2Fbaz", uri.AbsoluteUri);

此测试在.NET 4上失败但是传递给.NET 4.5,我可以使用ReSharper测试运行器测试它,它提供了一个方便的CLR选择菜单。

但如果我使用nunit console runner运行此测试,如下所示:

nunit-console.exe /framework:4.5“C:\ Data \ Projects \ UriTest \ bin \ Debug \ UriTest.dll”

我的测试失败了。我甚至修改了nunit-console.exe.config并添加了这个:

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />

在添加之后,我开始从跑步者那里得到这个输出:

Runtime Environment -
   OS Version: Microsoft Windows NT 6.2.9200.0
  CLR Version: 4.0.30319.34209 ( Net 4.5 )

ProcessModel: Default    DomainUsage: Single
Execution Runtime: v4.5

但我的测试仍然失败。知道为什么会这样吗?

2 个答案:

答案 0 :(得分:8)

在深入研究这个问题后,我会从不同的论坛收集信息。

首先,它应该自动检测运行时。如果它没有(这似乎是你的情况),你总是可以使用/ framework命令选项使用适当的运行时强制框架。

nunit-console.exe.config中的内容强制NUnit运行程序使用指定的运行时。如果您的程序集位于不同的.NET版本中,NUnit将在单独的进程中运行它们以强制使用框架版本。

请参阅documentation for NUnit 2.6.2

您在命令行中拥有的内容不应该是/framework:4.5,而是/framework:net-4.5

下一步是查看您的测试,看看是否有特定的东西使其失败。

请发表更多信息以获取更多信息。

答案 1 :(得分:0)

在.NET 4.0 Framework中,有一个关于编码斜杠值的错误。您可以查看说明here。在4.5中,它被修复以使结果符合RFC-3986。那么,这就是为什么你有4.0&amp;的不同行为的原因。 4.5。