在调用执行程序 'executor://mstestadapter/v1' 时发生了异常:未将对象引用设置为对象的实例。
在调用执行程序 'executor://mstestadapter/v1' 时发生了异常:未将对象引用设置为对象的实例。
我们在项目中使用Visual Studio 2012和Team Foundation Server 2010。由于我们使用了Microsoft Fakes,因此我们无法使用Team Build 2010的起始测试功能。我创建了一个构建活动,调用VSTest.Console.exe并传递测试程序集。这种方法对我们来说一直运行良好。然而,在最近一次提交后,当执行Vstest.console.exe时,我们遇到了以下错误:
错误:在调用执行程序'executor://mstestadapter/v1'时发生异常:对象引用未设置为对象的实例。
我将二进制文件复制到我的本地机器上,并且能够再次获得错误。有趣的是,在提交之前我们运行了一个开发构建,该构建使用相同的vstest.console.exe和参数运行,而且运行正常。我在我的机器上有两个文件夹,一个调用正常,另一个不正常。编译后的程序集大小看起来相同,并没有太多差异可以说明问题。
我试过使用进程监视器,但除了该进程返回退出代码1之外,没有找到任何明显的问题。有人对这个错误了解多吗?我有没有办法从我的测试运行中获取更多信息?
谢谢,
Hamid
在使用Visual Studio 2017时,我遇到了同样的错误信息。我使用了新的MSTest.Framework和MSTest.TestAdapter(以便使用Live Unit Testing)。结果发现,我在解决方案中使用了多个版本的这些包。将它们统一到最新版本解决了问题。
这是我的问题。具体来说,我需要先清理再构建。我有冗余的程序集。
这是我在使用VS 2017的Dev Azure时遇到的问题。
An exception occurred while invoking executor 'executor://mstestadapter/v1': Object reference not set to an instance of an object.
问题原因:在使用Visual Studio 2017的过程中,使用了MSTest.Framework和MSTest.TestAdapter这两个包,并且将它们的多个版本引入了解决方案中,导致冲突。
解决方法:统一使用最新版本的MSTest.Framework和MSTest.TestAdapter,并进行清理和构建操作,以消除冗余的程序集。这样就能解决掉"An exception occurred while invoking executor 'executor://mstestadapter/v1': Object reference not set to an instance of an object."这个错误。
问题出现的原因是在运行测试时,有些测试程序集针对.NET 4.0,而另一些测试程序集则针对.NET 4.5。同时,我们使用了Entity Framework 5.0。当试图在同一个测试进程(vstest.console.exe)中运行针对不同.NET框架版本和使用了Entity Framework 5.0的程序集时,就会出现这个错误。
我认为这与Entity Framework 5.0的两个版本(net40和net45)的发布方式有关。一旦在进程中加载了一个版本的库,就无法加载另一个版本,这导致了错误的出现。
解决方法是将测试程序集分成两组,一组针对.NET 4.0,另一组针对.NET 4.5。然后分别运行这两组测试程序集,以避免在同一个测试进程中加载不同版本的库导致的错误。
以下是解决方法的示例代码:
// 针对.NET 4.0的测试程序集 [TestClass] public class TestsNet40 { // 测试方法 [TestMethod] public void TestMethod1() { // 测试代码 } } // 针对.NET 4.5的测试程序集 [TestClass] public class TestsNet45 { // 测试方法 [TestMethod] public void TestMethod2() { // 测试代码 } }
通过将测试程序集分成两组,分别针对不同的.NET版本运行,可以避免加载不同版本的库导致的错误。