gpt4 book ai didi

c# - 如何让 Visual Studio 测试窗口使用我的 TestContainers Discoverer?

转载 作者:太空狗 更新时间:2023-10-29 22:32:25 25 4
gpt4 key购买 nike

我正在尝试为 Visual Studio 2013 编写一个测试适配器(我正在运行 Premium with Update 1,并且有 VS SDK,所以我可以引用所有 VS DLL)。因为它将处理原始内容文件而不是编译的 dll/exe,所以我似乎需要创建一个 ITestContainerDiscoverer

我在网上发现了一些似乎已经实现了这些的公共(public)存储库;例如:

TypeScript , Json , Node , and many more

但是;我的代码似乎是相同的(以及对 VS DLL 的相同引用),但似乎从未触发过。我已经放置了 File.Write、Console.WriteLine、Debuger.Launch,并且还附加了另一个 VS 实例。这是我的类(class)目前的样子:

[Export(typeof(ITestContainerDiscoverer))]
public class MyTestContainerDiscoverer : ITestContainerDiscoverer
{
[ImportingConstructor]
public MyTestContainerDiscoverer([Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider)
{
File.WriteAllText(@"M:\Coding\Applications\LuaTestAdapter\LuaTestAdapter\bin\Debug\Danny.txt", "TEST!");
Console.WriteLine("IT'S RUNNING!");
Debugger.Launch();
}

public Uri ExecutorUri
{
get { return TestExecutor.ExecutorUri; }
}

public IEnumerable<ITestContainer> TestContainers
{
get
{
return new[] {
new TestContainer(this, @"M:\TestProject\Test.lua")
};
}
}

public event EventHandler TestContainersUpdated;
}

我在一个以 .TestAdapter.dll 结尾的 DLL 中构建它,并手动将其复制到 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\扩展 然后启动 VS。 VS 正确加载了 TestAdapter,因为在同一个项目中,我的 TestDiscoverer(目前包含 DLL 作为调试扩展)正在输出到控制台:

[FileExtension(".lua")]
[FileExtension(".dll")]
[DefaultExecutorUri(TestExecutor.ExecutorUriString)]
public class TestDiscoverer : ITestDiscoverer
{
public void DiscoverTests(IEnumerable<string> sources, IDiscoveryContext discoveryContext, IMessageLogger logger, ITestCaseDiscoverySink discoverySink)
{
logger.SendMessage(TestMessageLevel.Informational, "This one works!");
}
}

所以我推测 TestContainerDiscovered 一定有问题;但是我在网上找到的样本中看不到任何不同的东西:O(

最佳答案

看起来我可能已经发现了不同之处...如果我创建一个 Visual Studio Package 项目并“以旧方式”安装我的 TestAdapter,那么我的代码执行正常。

看起来“正常”的 TestAdapter(例如,那些使用编译 DLL/EXE 的,因此可以使用提供的 TestContainerDiscoverers)工作正常(这就是为什么 NUnit、xUnit 等可以使用基于 NuGet 的包,或将 DLL 复制到Extensions 文件夹),但为了让我的工作,我需要通过包含以下“ Assets ”的包项目安装它(大概是因为使用 MEF 来连接 ITestContainerDiscoverer)。

<Asset Type="Microsoft.VisualStudio.MefComponent" d:Source="Project" d:ProjectName="LuaTestAdapter" Path="|LuaTestAdapter|" />

关于c# - 如何让 Visual Studio 测试窗口使用我的 TestContainers Discoverer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21646104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com