Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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
C# iTestContainerDiscoveryr不在Visual Studio 2015中工作_C#_Visual Studio_Unit Testing_Visual Studio 2015_Vsix - Fatal编程技术网

C# iTestContainerDiscoveryr不在Visual Studio 2015中工作

C# iTestContainerDiscoveryr不在Visual Studio 2015中工作,c#,visual-studio,unit-testing,visual-studio-2015,vsix,C#,Visual Studio,Unit Testing,Visual Studio 2015,Vsix,我有一个Visual Studio Unittest适配器,到目前为止,它在Visual Studio 2013中运行良好。使用自定义命令ctest-N提取测试,因此需要实现ITestContainerDiscoverer 您可以在此处查看该项目: 看起来,Visual Studio 2015只是忽略了ITestContainerDiscoverer实现,或者至少从未实例化和使用它。如果我从项目中删除容器发现程序,并将默认的文件扩展名.dll和.exe添加到ITestDiscoverer,那么V

我有一个Visual Studio Unittest适配器,到目前为止,它在Visual Studio 2013中运行良好。使用自定义命令
ctest-N
提取测试,因此需要实现
ITestContainerDiscoverer

您可以在此处查看该项目:

看起来,Visual Studio 2015只是忽略了
ITestContainerDiscoverer
实现,或者至少从未实例化和使用它。如果我从项目中删除容器发现程序,并将默认的文件扩展名
.dll
.exe
添加到
ITestDiscoverer
,那么VSIX通常是正确安装和工作的

如何执行
ITestContainerDiscover

好的,经过一些(重新)搜索后,我设法解决了我的问题:

一,

有一个XML文件的unittest适配器示例在VS2015上运行,因此我能够找到我的问题:

二,

看起来我的ITestContainerDiscoverer的构造函数的签名是错误的。虽然我最初的测试容器发现者有一个没有任何参数的构造函数,但XML示例中使用的构造函数使用了一组参数。经过一些测试,您似乎至少需要一个IServiceProvider作为构造函数参数:

public CTestContainerDiscoverer(
    [Import(typeof (SVsServiceProvider))] IServiceProvider serviceProvider)
    {
不知道为什么,但我认为这解决了问题。事实上,unittest适配器接口的文档非常糟糕