Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使ReSharper在运行测试时使用.NET4.5?_.net_Nunit_Resharper - Fatal编程技术网

如何使ReSharper在运行测试时使用.NET4.5?

如何使ReSharper在运行测试时使用.NET4.5?,.net,nunit,resharper,.net,Nunit,Resharper,我有一行代码在我的单元测试中的行为与在我的应用程序中的行为不同,我正在尝试确定原因。代码行如下所示: var valid = Uri.IsWellFormedUriString("1.1.1.1:12345", UriKind.RelativeOrAbsolute); 当使用.NET 4.0时,这会将valid设置为true。在移动到.NET4.5之后,这开始给出false。我不太关心这个,因为它很容易修复。但它显然不容易测试。我尝试编写一个单元测试来确认问题,然后再修复它,但是单元测试通过了

我有一行代码在我的单元测试中的行为与在我的应用程序中的行为不同,我正在尝试确定原因。代码行如下所示:

var valid = Uri.IsWellFormedUriString("1.1.1.1:12345", UriKind.RelativeOrAbsolute);
当使用.NET 4.0时,这会将valid设置为true。在移动到.NET4.5之后,这开始给出false。我不太关心这个,因为它很容易修复。但它显然不容易测试。我尝试编写一个单元测试来确认问题,然后再修复它,但是单元测试通过了。我将测试代码复制到一个新的控制台项目中,在那里它显示了问题。当console项目设置为.NET 4.0时,该值为true;当它设置为.NET 4.5时,该值为false。但在我的单元测试中,它总是正确的,即使我的测试项目设置为.NET4.5。所以看起来ReSharper使用的是旧版本的.NET

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


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

正如@TheESJ所说,这是由于.NET 4.5框架中的“怪癖模式”。ReSharper 8.2中的测试运行程序仅为.net 4.0,因此它会触发怪癖模式,您会得到意外的行为。ReSharper 8.2.1中的测试运行程序(目前在RC,但RTM Real很快就会出现)也直接支持4.5。如果您的程序集是4.5,则会启动4.5 runner可执行文件,并且您不会获得怪癖模式。

您的测试项目是否有
app.config
supportedRuntime version=“v4.0”sku=“.NETFramework,version=v4.5”
?(IDE通常会为您添加此代码。)我不知道R#的测试运行程序是否使用此代码,但检查一下也无妨。我正在用LINQPad v4.48.01检查这一行代码,它正在打印出
true
(据我所知,LINQPad使用的是.NET 4.5)。(尽管可能相关)。这是一个兼容性问题。在.NET4.5中进行了一些被认为是破坏性的更改。进行更改的人“怪癖”新的行为只有在应用程序针对较新版本时才处于活动状态。它们通过检查默认AppDomain的条目程序集上的TargetFrameworkAttribute来确定目标。大多数单元测试运行程序的问题是,无论单元测试dll的目标版本如何,它们都使用单个运行程序程序集。我相信MSTest通过在设置appdomain时指定目标框架解决了这个问题。NUnit也应该这样做。@Joe我的项目没有app.config;我用你提到的那句话添加了一个,但似乎没有什么帮助。只是想确认一下,你是说我使用的ReSharper版本不支持我想要的东西?这是有道理的;我将测试转移到MSTest项目中,ReSharper仍然没有暴露错误,而TestExplorer暴露了错误。正确-我没有注意到你说的是ReSharper 7。这是在ReSharper 8.2.1中刚刚修复的,添加了一个特定于.net 4.5的测试运行程序可执行文件。