hus*_*int 12 nunit unit-testing test-runner
我有以下简单的测试用例:
var uri = new Uri("http://foo.com/bar%2Fbaz");
Assert.AreEqual("http://foo.com/bar%2Fbaz", uri.AbsoluteUri);
Run Code Online (Sandbox Code Playgroud)
这个测试在.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" />
Run Code Online (Sandbox Code Playgroud)
添加之后,我开始从跑步者那里得到这个输出:
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
Run Code Online (Sandbox Code Playgroud)
但我的测试仍然失败了.知道为什么会这样吗?
在深入研究这个问题之后,这里是我从不同论坛收集的信息.
首先,它应该自动检测运行时.如果不是(这似乎是你的情况),你总是可以使用/ framework命令选项使用适当的运行时强制框架.
你在nunit-console.exe.config中拥有的内容强制NUnit运行器使用指定的运行时.如果您的程序集位于不同的.NET版本中,NUnit将在单独的进程中运行它们以强制使用框架版本.
请参阅NUnit 2.6.2的文档.
命令行中的内容不应该是/framework:4.5,而是/framework:net-4.5
下一步是看看你的测试,看看是否有某些特定的东西使它失败.
请进一步评论以获取更多信息.