【发布时间】:2020-11-05 08:11:50
【问题描述】:
背景:我正在尝试运行 C# 单元测试(测试使用 Xunit 框架),我的要求是运行单个单元测试,而不是整个 dll 中的所有测试。
我尝试过的事情:我尝试了几个命令,但直到现在都没有运气。
-
我试过
dotnet test "complete_path/someTestDll.dll"结果:这开始运行 dll 中的所有测试(预期但不希望) -
试过
dotnet test "complete_path/someTestDll.dll" \Tests: "Namespace.ClassName.MethodToRun"结果:包含找到的测试的 Dll,但没有测试与过滤器匹配。 -
试过
dotnet test "complete_path/someTestDll.dll" --filter "FullyQualifiedName=Namespace.ClassName.MethodToRun"未找到测试匹配过滤器(dll 路径再次正常) -
试过
dotnet test "complete_path/someTestDll.dll" --filter "DisplayName=Namespace.ClassName.MethodToRun"
不仅是这些,还有完整路径、相对路径等各种混搭,几乎浪费了一整天。
注意: 我知道关于这个问题的答案很少,但我已经尝试了所有这些,从昨天开始,直到现在似乎没有什么对我有用,所以我不得不来这里寻求帮助。
看起来我错过了一些严重的事情,希望我能得到一些解决我问题的答案。
非常感谢!!
【问题讨论】:
-
您可以选择在测试中添加
[Fact(Skip = "Your reason to not run the test")]跳过参数吗?如果您打算稍后运行其中一些,我想这并不理想。 -
@JonathanVanDam 感谢您的回答,但这个选项对我来说不可行,因为我在不同类的 dll 中有 4k 单元测试,在每个测试中添加它是不切实际的。我只是想要一种运行单个单元测试的方法,并为本地测试提供其名称。谢谢!
-
嗯,我唯一能想到的另一件事是使用 Visual Studio 中的播放列表来创建一组要运行的单元测试,但我不知道运行测试的方法从命令行的播放列表中。
-
好吧,我也不确定。此外,我使用命令行的全部意图是我不想使用 Visual Studio,因为它非常慢。谢谢!
-
我能够让
FullyQualifiedName=Namespace.ClassName.MethodToRun工作。它不起作用的唯一原因是我没有正确输入完全限定的名称,或者该方法不是测试。我想知道完全限定名称是否有问题。
标签: c# .net unit-testing command-line xunit