Resharper 单元测试未运行

问题描述 投票:0回答:7

我正在尝试开始在项目中编写单元测试。我先写了

createTest()
方法并尝试了一下。该测试通过了,我开始编写其他测试。

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

到目前为止我发现的只是人们使用 NUnit。我们使用默认的 Microsoft 测试框架和 ReSharper 来运行测试。

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

    user.Address = "Testing Street 1";
    user.Email = "[email protected]";
    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 = "[email protected]";

    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显示“测试未运行”

我刚刚尝试在我的笔记本电脑上运行测试。他们无需对代码进行任何更改即可工作,并且测试立即完成。这让我觉得我正在处理某个地方的错误配置。

c# unit-testing visual-studio-2013 resharper
7个回答
48
投票

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

我通常在 Visual Studio 的命令窗口中执行此操作,您只需依次键入这些命令即可

Resharper_Suspend
Resharper_Resume

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

如果失败,您可以清除 resharper 缓存。可以在此处查看有关如何执行此操作的信息。

这是操作方法从 VS 菜单


6
投票

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


6
投票

ReSharper 2017.3.1有一个bug,已于2017.3.2修复:https://blog.jetbrains.com/dotnet/2018/02/01/resharper-ultimate-2017-3-2-bugfix/

您可以使用

ReSharper
>
Help
>
Check for Updates
进行更新。

您可以通过启用日志来查看是否有相同的错误。这就是我所拥有的:

--- 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


4
投票

我也遇到过这种情况,找到原因了: http://www.henrikbrinch.dk/Blog/2012/02/15/Making-Resharper-testrunner-work-in-64-bit

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

希望这对你有帮助


3
投票

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

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

接下来我使用ReSharper->选项->常规->“清除缓存”,这需要重新启动VS。

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

这解决了问题。


1
投票

今天发生在我身上,上述建议(清除缓存、重新启动 VS、暂停/恢复 resharper)都不起作用。

但是,在“错误”下的“单元测试会话”选项卡中,我可以看到有一个 TypeLoadException,这使我能够查明问题。 enter image description here


-7
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.