当前位置: 首页 > 知识库问答 >
问题:

为什么xUnit Runner找不到我的测试?

薛泰
2023-03-14

我有一个 xUnit.net 测试,如下所示:

static class MyTestClass
{
    [Fact]
    static void MyTestMethod() 
    {
    }
}

VS 2012的xUnit插件表示:

未找到要运行的测试。

TestDriven.net运行良好,但提到了一些关于特设:

1通过,0失败,0跳过(请参阅“任务列表”),这花费了0.47秒(临时)

TeamCity、xunit.gui.exexunit.console.exe和Visual Studio也找不到TestMethod

(我已经安装了xunit.runner.visualstudio,VS看到了一些测试。)

什么原因?

共有3个答案

陶飞鸿
2023-03-14

从 http://xunit.github.io/docs/getting-started-desktop.html#run-tests-visualstudio:

如果你在发现或运行测试时遇到问题,则可能是 Visual Studio 中运行程序缓存损坏的受害者。若要清除此缓存,请关闭 Visual Studio 的所有实例,然后删除文件夹 %TEMP%\可视工作室测试探索者扩展。还要确保你的项目仅针对单个版本的 Visual Studio 运行器 NuGet 包(“运行者”)进行链接。

东方国安
2023-03-14

这个答案适用于VS 2013,但步骤与VS 2012基本相同。这适用于通过ReSharper的单元测试功能运行。

> < li>

安装Visual Studio 2013的xUnit.net运行html" target="_blank">程序(以管理员身份运行Visual Studio时要小心,否则以非管理员身份运行IDE时测试可能无法运行):

一种。在Visual Studio 2013中,转到工具-

b.搜索 visual Studio 2012 和 2013 的 xUnit.net 运行者

c。然后下载(安装)它。如果从VS 2012升级到VS 2013,建议卸载这个,然后重新安装。

d.重新启动Visual Studio。

如果安装了ReSharper,请安装xUnit。net测试运行器插件:

(注意:自 ReSharper 2016.1 起,续航支持内置于 ReSharper 中,这意味着不再需要 xunit 插件。

一种。在Visual Studio 2013中,导航:Resharper-

b.在左侧,选择在线。

c. 搜索“xunit.net”。选择“xUnit.net 测试支持”。单击“安装”。

d.重新启动Visual Studio 2013。

“清洁”解决方案

一个。在 IDE 的“解决方案资源管理器”中,右键单击该解决方案,然后选择“清理”。

b.重新编译。

c.现在,当右键单击一个< code>[Fact]属性时,选择Resharper的“运行单元测试”(与默认的“运行测试”相对)

使用XUnit运行故障排除:

>

  • 如果使用XUnit运行[Fact]测试的问题仍然存在,则可能需要手动从以下任何/所有文件夹中删除xUnit包(查看xunit DLL的内容,如果找到,则删除xUnit文件夹):

    >

  • C:\Program Files(x86)\Microsoft Visual Studio 12.0\Common 7\IDE\扩展\

    < code>C:\Users\

    至于ReSharper,尝试卸载并重新安装xunitcontrib库(xUnit.net测试支持)。我注意到有一次卸载时,一些错误消息闪过。我一度抓取了一个屏幕截图,它列出了:

    • 访问路径<code>C:\Users\

    要解决此问题,请删除<code>C:\Users\

  • 贺玉石
    2023-03-14

    太长别读您的测试类必须是public(但您的测试方法可以是私有和/或静态

    出于效率的考虑,xUnit作者选择不使用< code>BindingFlags。非公共的,当在运行器中搜索测试类时(MSIL元数据表对< code > private (/< code > internal )类的索引程度不同,因此反射所能达到的相对效率有很大的性能差异)。

    由于上述原因,您的< code >类是< code >私有的这一事实意味着它不会被拾取。

    事实上,测试方法是<code>私有

    请注意,Visual Studio xUnit Runner扩展、xunit.console.exe(和GUI)、xunitMSBuild任务、Resharper和CodeRush都一致尊重这一点(尽管可以说它们[尤其是后两者]可以做更多的事情来标记测试类(即类[可能间接]包含Fact派生的注释)何时是私有)。

    原因是测试驱动的。net运行您的测试是TestDriven的作者。net已经付出了巨大的努力使它能够正常工作。它在内部使用一个特殊的测试运行器包装器/垫片(称为临时运行器)来运行测试。请注意,该方法实际上不是通过xUnit运行的。net runner,因此您在测试中设置的任何具有副作用的属性都不会被触发。

    值得注意的是,NUnit(我很确定MSTest)确实使用了私有反射[,因此在私有类中获取测试],这可能就是为什么它以前似乎从来都不是您需要担心的重要事情。

    注意:这样做的一个副作用/技巧是,您可以将测试类< code>private作为快速< code >跳过ping测试类[和任何嵌套类]中所有测试的方法。(遗憾的是,在这个星球上,这种被无意使用的案例远远多于有意使用的案例!)

     类似资料:
    • 我有一些测试使用内置的,但无法让它们运行。 我使用视觉工作室2012最终。 我有两个项目的解决方案;一个是使用微软的测试。VisualStudio。测试工具。单元测试,在类前,在测试方法前,并参考Microsoft。VisualStudio。质量工具。UnitTestFramework(版本10.0.0.0,运行时版本v2.0.50727)。我曾尝试过dot net framework 3.5、4

    • 问题内容: 我正在尝试打开一个保存在源文件夹本身中的CSV文件名“ logger.csv”。 但是,这一直在给我一个“找不到文件”错误。 问题答案: 如果您现在就使用相对路径,则该文件需要存在于项目根目录中, 而不是 存在于java文件的目录中。 考虑以下层次结构: 不管用。 将 现在 的工作。(注意,该文件与src目录相邻。)

    • 问题内容: 我在asp.net项目的Content文件夹中有一个json文件: …以及访问它的代码: …但是调用代码时什么也没发生;浏览器控制台说:“无法加载资源:服务器响应状态为404(未找到)” 为什么找不到?“波浪号文件名”不是通往文件的正确路径吗? 更新 我还尝试了向后“重击”: …并且得到相同的结果(“ 无法加载资源:服务器以404(未找到)状态进行响应 ”) 更新2 然后,我尝试了这种

    • 我用RESTAPI创建了一个非常基本的Spring Boot项目。我尝试将它连接到我的Angular应用程序,但它出现了一些CORS安全错误,所以我切换到了Postman。我试图用邮递员测试它,但我一直收到一个404未找到邮递员错误。为什么我不能连接到我的后端并发布到测试仪功能? 控制器 主要的 安慰 等效的 cURL 命令 邮递员

    • 问题内容: 这个问题已经在这里有了答案 : 如何在Eclipse Web项目中安装JDBC驱动程序而不面对java.lang.ClassNotFoundexception (13个答案) 3年前关闭。 我正在开发一个Web应用程序,使用:Eclipse IDE(Marse),Java 8,Apache tomcat 8,MySQL。我的用户注册代码如下: 我的代码也是正确的,并且我在Eclipse

    • 尝试将我的java应用程序从Eclipse导出到可运行的jar文件中。(这是一个控制台应用程序) 这是Eclipse中项目目录的外观: 以下是项目的运行配置: 这就是jar创建选项的外观: 最后,这是我得到的错误: 我真的试过了所有的东西,但我很困惑为什么它不运行。主类选择正确,运行配置似乎正确,我尝试了runnable和regular,两者都不起作用。 我尝试过清理、重建,甚至重新制作这个项目,