如何在运行测试时使ReSharper使用.NET 4.5?

时间:2014-05-14 13:29:25

标签: .net nunit resharper

我有一行代码在单元测试中的行为与我的应用程序不同,我试图确定原因。代码行是这样的:

var valid = Uri.IsWellFormedUriString("1.1.1.1:12345", UriKind.RelativeOrAbsolute);

使用.NET 4.0时,这会将valid设置为true。转移到.NET 4.5后,这开始给出错误。我并不那么担心,因为它很容易修复。但它显然不容易测试。在修复问题之前,我尝试编写单元测试以确认问题,但是单元测试通过了。我将测试代码复制到一个新的Console项目中,然后显示问题。当控制台项目设置为.NET 4.0时,该值为true,当它设置为.NET 4.5时,该值为false。但在我的单元测试中,即使我的测试项目设置为.NET 4.5,也始终如此。所以看起来ReSharper正在使用旧版本的.NET。

我正在使用VS2012和reSharper 7.1.3,它设置为使用内置的NUnit 2.6.2运行测试,声称能够使用4.5框架运行测试。在NUnit文档中,我的印象是这是由配置文件中的设置控制的,但我不确定在哪个文件中设置。

假设我已正确理解问题,有人能告诉我如何配置ReSharper使用的NUnit版本以使用.NET 4.5吗?

1 个答案:

答案 0 :(得分:0)

正如@TheESJ所述,这是由于" quirks模式"在.net 4.5框架中。 ReSharper 8.2中的测试运行器只有.net 4.0,因此它会触发怪异模式,并且会出现意外行为。 ReSharper 8.2.1中的测试运行器(目前在RC,但RTM Real Soon Now)也直接支持4.5。如果您的程序集是4.5,那么4.5 runner可执行程序将启动,并且您不会得到怪癖模式。