【问题标题】:Resharper Unit Tests not runningResharper 单元测试未运行
【发布时间】: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,其他开发人员可能会为了小的性能提升而禁用它。

标签: c# unit-testing visual-studio-2013 resharper


【解决方案1】:

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

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

Resharper_Suspend
Resharper_Resume

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

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

这里是如何做到的from VS menu

【讨论】:

  • 我是通过 Visual Studio 选项菜单完成的。成功了!
  • 谢谢@BastanteCaro .. Resharper 可能会很痛苦
  • 以下是通过 Visual Studio 选项菜单执行此操作的方法:stackoverflow.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 知道,我最近确实找到了一份新工作,一个月后我发现了同样的问题。这仍然是唯一有效的答案
        猜你喜欢
        • 2010-12-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-13
        • 2016-03-23
        • 2011-08-29
        • 2010-09-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多