Resharper 单元测试未运行

Posted

技术标签:

【中文标题】Resharper 单元测试未运行【英文标题】:Resharper Unit Tests not running 【发布时间】:2015-04-13 19:39:10 【问题描述】:

我正在尝试开始在项目中编写单元测试。我先写了createTest并试了一下。这个测试通过了,我开始编写我的其他测试。

现在我所有的测试都只是说“测试未运行”。当我尝试一次运行所有测试和运行单个测试时都会发生这种情况。

https://github.com/Requinard/OperationOctopus/tree/UnitTest

到目前为止,我发现的只是使用 NUnit 的人。我们使用默认的 microsoft 测试框架,并使用 resharper 运行测试。

    [TestMethod]
    public void CreateTest()
    
        Init.Initialize();
        // set up
        UserModel user = new UserModel();

        user.Address = "Testing Street 1";
        user.Email = "Testing@test.com";
        user.Level = 2;
        user.Password = "test";
        user.RfiDnumber = "00d0wad0aw";
        user.Telephonenumber = "0638212327";
        user.Username = "testcaseuser";

        Assert.IsTrue(user.Create(), "Cannot write user to database");

        test_user = user;
    

    [TestMethod]
    public void ReadTest()
    
        Init.Initialize();
        // set up
        UserModel user = getTestUser();

        Assert.AreEqual(user.Email, test_user.Email, "Reading returned an unexpected result");
    

    [TestMethod]
    public void AlterTest()
    
        Init.Initialize();
        UserModel user = getTestUser();

        user.Email = "test@testing.com";

        Assert.IsTrue(user.Update(), "Failure during updating");

        user.Read();

        Assert.AreNotEqual(user.Email, test_user.Email);
    

    [TestMethod]
    public void DestroyTest()
    
        Init.Initialize();
        UserModel user = getTestUser();

        Assert.IsTrue(user.Destroy(), "Could not destroy user");
    

上面的测试会让resharper说“测试没有运行”

我刚刚尝试在我的笔记本电脑上运行测试。他们在没有对代码进行任何更改的情况下工作,并且测试立即完成。这让我认为我正在处理某个错误的配置。

【问题讨论】:

请在问题本身中包含相关代码。 尝试在调试中运行并逐步查看发生了什么。 我在 CreateTest() 的第一条语句处设置了一个断点并运行调试。 Visual Studio 开始加载大量符号,然后立即停止了我的调试会话。 似乎测试在我的笔记本电脑上运行良好,只是在我的台式机上不行 确保在 ReSharper 选项 -> 单元测试中将桌面上的 ReSharper 副本设置为启用 MSTest 提供程序。默认情况下它是启用的,但如果你将 ReSharper 文件签入到 Git,假设你使用的是 NUnit,其他开发人员可能会为了小的性能提升而禁用它。 【参考方案1】:

我认为重新启动整个系统可能有点为时过早。 我发现当这种情况发生时,您需要做的就是重新启动 Resharper。

我通常在 Visual Studio 的命令行窗口中执行此操作,您只需要一个接一个地键入这些命令

Resharper_Suspend
Resharper_Resume

这通常可以为我解决问题,并且不需要重新打开解决方案。

如果失败,您可以清除 resharper 缓存。可以查看here 了解如何执行此操作的信息。

这里是如何做到的from VS menu

【讨论】:

我是通过 Visual Studio 选项菜单完成的。成功了! 谢谢@BastanteCaro .. Resharper 可能会很痛苦 以下是通过 Visual Studio 选项菜单执行此操作的方法:***.com/questions/2189792/… 清除缓存对我有用,我什至没有看到“测试未运行”消息 - 测试会话窗格只是空的!【参考方案2】:

确保您没有做我正在做的事情,并完全忘记解决方案处于发布模式,测试项目设置为仅在调试模式下构建;-)

【讨论】:

【参考方案3】:

ReSharper 2017.3.1 中存在一个错误,已在 2017.3.2 中修复:https://blog.jetbrains.com/dotnet/2018/02/01/resharper-ultimate-2017-3-2-bugfix/

您可以使用ReSharper > Help > Check for Updates 进行更新。

您可以通过enabling logs 查看您是否有同样的错误。这就是我所拥有的:

--- EXCEPTION #2/2 [LoggerException]
Message = “Passed version string '2.1.101' doesn't look to be a valid .net core sdk version”

最终:

|W| UnitTestLaunch | System.NullReferenceException: Object reference not set to an instance of an object.
at JetBrains.ReSharper.UnitTestProvider.nUnit.v30.NUnitServiceProvider.GetRunStrategy(IUnitTestElement element)
at JetBrains.ReSharper.UnitTestProvider.nUnit.v30.Elements.NUnitElementBase.GetRunStrategy(IHostProvider hostProvider)
at JetBrains.ReSharper.UnitTestFramework.Launch.Stages.BuildStage.CollectProjectsToBuild()
at JetBrains.ReSharper.UnitTestFramework.Launch.Stages.BuildStage.Run(CancellationToken token)
at JetBrains.ReSharper.UnitTestFramework.Launch.UnitTestLaunch.RunStage(Object stageObject)

我的项目使用的是 NET471,我在 Visual Studio 15.6.27428.2005 中运行 ReSharper 2017.3.1

【讨论】:

我不知道这是否是我遇到的问题,但重新启动 Re-sharper 没有帮助,但安装新版本有帮助,所以也许就是这样。 我的问题是单元测试项目包含对 Microsoft.AspNetCore.App 的引用,我没有安装相应的 SDK 版本。这使得 resharper 单元测试挂起而没有任何错误。才打开resharper verbose logging,才发现是dotnet core sdk版本的原因。 呃,谢谢你发布这个。仅仅因为我没有更新 resharper,我就失去了几个小时的工作效率!【参考方案4】:

这也发生在我身上,在这里找到了原因: http://www.henrikbrinch.dk/Blog/2012/02/15/Making-Resharper-testrunner-work-in-64-bit

这个修复实际上很苛刻,我所做的是更改配置: VS2015 -> Resharper -> 选项 -> 单元测试 -> 默认平台架构 - 强制测试在 32 位进程中运行

希望对你有帮助

【讨论】:

不幸的是,这对我没有任何影响。同样的问题。【参考方案5】:

今天发生在我身上,上述建议(清除缓存、重新启动 VS、暂停/恢复 resharper)均无效。

但是,在错误下的单元测试会话选项卡中,我可以看到我有一个 TypeLoadException,它允许我查明问题。

【讨论】:

【参考方案6】:

我会定期遇到这种情况,因为我在一个具有多个分支的项目上工作,并且在不关闭 Visual Studio 的情况下在它们之间切换。这有时会使 ReSharper 感到困惑,并且我将不再在某些项目中使用 NUnit 选项。

在带有 ReSharper 2018.2 的 Visual Studio Community 2017 中,我尝试的第一件事是卸载 NUnit 测试运行器不可用的项目。有时这是唯一需要的步骤。

接下来我使用需要重启 VS 的 ReSharper->Options->General->'Clear caches'。

然后我再次卸载并重新加载行为不端的项目。

这解决了问题。

【讨论】:

【参考方案7】:

似乎 /somewhere/ 存在错误的配置。我重新安装了整个系统,然后是 VS2013 和 R#。现在测试运行良好。

【讨论】:

对大多数人来说,重新安装整个系统并不是一个可行的解决方案。 @bak202 真的,真的。更好的方法是查看所有日志。这种解决问题的方式其实是个大问题,是学习的障碍。 @Samyn 不要害怕处理大量日志并以“开发人员的风格”解决问题 :) 重新安装系统会浪费您的时间。处理日志会迫使您奔跑。 焦土杀死苍蝇。 为了安全起见,你应该买一台新电脑 :) 嗯 whaddaya 知道,我最近确实找到了一份新工作,一个月后我发现了同样的问题。这仍然是唯一有效的答案

以上是关于Resharper 单元测试未运行的主要内容,如果未能解决你的问题,请参考以下文章

Resharper 将我的 NUnit 测试标记为未使用

ReSharper 的单元测试运行器有快捷键吗?

使用 yeoman 的 ReSharper Jasmine AngularJS 单元测试

扩展 ReSharper 的单元测试会话窗口

你如何使用 Jasmine + Resharper 引用外部库

ReSharper Unit Test Runner 忽略部署项配置