xUnit v1测试出现在xUnit GUI(xunit.gui.clr4.exe)中,但未出现在VS 2012测试资源管理器中。

5

我有一个使用NuGet安装了"xUnit.net"和"xUnit.net Runners"包的F#类库。我有以下代码:

module XUnitTest

open Xunit

[<Fact>]
let Test () =
    do Assert.True (1 = 2)
    ()

当我运行xUnit GUI(xunit.gui.clr4.exe,由NuGet添加到(projectdirectory)\ packages \ xunit.runners.1.9.1 \ tools),并加载此项目构建的程序集时,Test()方法会出现,并在运行时失败,这是预期的。
但是,无论我重建多少次、重新启动等操作,都无法使测试出现在VS 2012的测试资源管理器中。如果我点击“运行全部”,构建输出窗口会弹出,但没有其他反应。
为了尝试解决问题,我还安装了xUnit.net扩展程序,虽然我不认为它们对我所要做的有任何必要。但它也没有起作用。
如果我可以提供其他信息,请告诉我,感谢您阅读!

你的 VS 插件是否已安装并检测到了 C# 的 [Fact] - Ruben Bartelink
好问题。我创建了一个C#单元测试项目,内置的测试确实出现在测试资源管理器中。然后我使用NuGet获取了xUnit.net和xUnit.net Runners,添加了对Xunit的引用,将“TestMethod”属性替换为“Fact”,并重新构建。没有测试。我已经成功地使用了其他NuGet包,比如FSharpx XAML类型提供程序,并且没有收到任何关于安装Xunit.net包的明显错误消息。 - FSharpN00b
为什么xUnit运行器找不到我的测试? - Ruben Bartelink
我刚遇到了这个问题,但是因为我忘记在测试方法声明的末尾加上()... - Benjol
2个回答

6

嗨,Ruben,我已经通过NuGet安装了xUnit.net Runners包。这将xUnit.net控制台和GUI可执行文件添加到我的(projectdirectory)\packages\xunit.runners.1.9.1\tools目录中,这就是我能够确定xUnit.net本身能够看到我的程序集中的测试的方式。只是似乎xUnit和Visual Studio之间的某些集成没有发生。 - FSharpN00b
@FSharpN00b 没错,确实有一部分缺失。我已经提供了链接,那是一个插件,可以嵌入到 VS 中,并扫描 xUnit.net 事实的测试程序集。由于你没有安装它,所以无法找到你的 C# 或 F# 测试。因此,你需要按照链接中的说明进行安装。我不知道还有什么更长的表述方式! - Ruben Bartelink
嗨,Ruben,你说得很对。我找不到 Visual Studio 浏览到你发布的链接里面的 vsix 文件的方法,但是我能够通过转到“工具”菜单、选择“扩展和更新”并搜索 xUnit.net runner 来安装它。现在我的测试出现了。我原以为“xUnit.net: Runners”包可以通过 NuGet 获取,而“VS 2012 上的 xUnit.net runner”则可在 Extensions and Updates 中找到。很明显,我想错了,因为它们不是同一个东西。谢谢你澄清这一点,也为没有一开始就理解而道歉。 - FSharpN00b
我猜NuGet软件包是为那些想要手动运行xUnit的控制台和GUI版本的人准备的。我刚刚从我的项目中卸载了该软件包,但测试仍然出现在“测试资源管理器”中,并且正常运行。 - FSharpN00b
现在,它已经被弃用了,你应该遵循这个链接:http://xunit.github.io/docs/running-tests-in-vs.html - Philippe
显示剩余2条评论

1

请务必搜索包含预发布版本。您需要的软件包是“xUnit.net [Visual Studio Runner]”,这是一个预发布版本。如果您只搜索稳定版本,那么您只会找到“xUnit.net:Runners”,这在Visual Studio中不起作用。


谢谢George。下次我在项目中想使用xUnit时,我会记住这个的。 - FSharpN00b

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接