Resharper单元测试无法运行

28

我正在尝试在一个项目中开始编写单元测试。我首先编写了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显示“未运行测试”

我刚试着在我的笔记本电脑上运行这些测试。它们可以在不对代码进行任何更改的情况下正常工作,并且测试立即完成。这让我认为我可能正在处理某个故障配置。


1
请在问题本身中包含相关代码。 - Pierre-Luc Pineault
似乎我的笔记本电脑上测试正常,但在我的台式电脑上却有问题。 - requinard
1
请确保您桌面上的 ReSharper 副本已设置为启用 MSTest 提供程序,在 ReSharper 选项 -> 单元测试中。它默认是启用的,但如果您将 ReSharper 文件检入 Git,则另一个开发人员可能已将其禁用以获得小的性能提升,因为他们认为您将使用 NUnit。 - KeithS
MSUnit提供程序已启用。我开始觉得我的台式电脑有问题,因为我的笔记本电脑可以毫无问题地执行测试。 - requinard
我刚刚卸载了R#并重新启动了电脑。问题仍然存在。我的测试根本无法运行。问题只出现在我的台式电脑上。 - requinard
显示剩余2条评论
7个回答

48

我觉得重新启动整个系统可能有点过早了。我发现当出现这种情况时,你只需要重新启动Resharper就可以了。

我通常会在Visual Studio的命令窗口中执行此操作,你只需要依次输入这些命令即可。

Resharper_Suspend
Resharper_Resume

通常这对我来说是解决问题的方法,并且不需要重新打开解决方案。

如果这样还不行,您可以清除Resharper缓存。您可以在此处查看如何操作。

从VS菜单中这里了解如何执行此操作。


2
我通过 Visual Studio 的选项菜单完成了这个操作。成功了! - willem
谢谢 @BastanteCaro .. Resharper 可能会让人感到烦恼。 - Mike
以下是如何通过Visual Studio选项菜单完成的:https://dev59.com/UXI95IYBdhLWcg3wtwRe - Eternal21
清除缓存对我有用,即使我没有看到“测试未运行”的消息 - 测试会话窗格也是空的! - Paul

6

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

您可以使用 ReSharper > 帮助 > 检查更新 来升级。

您可以通过开启日志记录来查看是否遇到相同的错误。以下是我遇到的错误:

--- 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没有帮助,但安装新版本确实有用,所以也许那就是问题所在。 - Eternal21
对我来说问题是单元测试项目包含了对Microsoft.AspNetCore.App的引用,而我没有安装相应的SDK版本。这会导致resharper单元测试无任何错误地挂起。只有当我打开resharper详细日志记录时,才发现是由于dotnet core sdk版本引起的。 - Tincan
啊,谢谢您发布这篇文章。我浪费了几个小时的工作时间,只因为我没有更新 Resharper! - Mash

6

请确保您不要像我一样犯错,完全忘记了解决方案在发布模式下且测试项目仅设置为在调试模式下构建;-)


4

很遗憾,对我没有任何影响。问题依旧存在。 - willem

2
我偶尔会遇到这个问题,因为我在一个有多个分支的项目上工作,并且在不关闭Visual Studio的情况下切换它们。这有时会让ReSharper困惑,我将无法在某些项目上使用NUnit选项。
在Visual Studio Community 2017与ReSharper 2018.2中,我尝试的第一件事是卸载其中NUnit测试运行程序不可用的项目。有时这是唯一需要的步骤。
接下来,我使用ReSharper->选项->常规->“清除缓存”,这需要重新启动VS。
然后我再次卸载并重新加载出现问题的项目。
这样就解决了问题。

1
今天发生了这件事,但以上建议(清除缓存、重新启动VS、暂停/恢复resharper)都没有起作用。然而,在“单元测试会话”选项卡下的“错误”中,我可以看到我有一个TypeLoadException,这使我能够找到问题所在。 enter image description here

-7

看起来某个地方出现了错误的配置。我重新安装了整个系统,然后安装了VS2013和R#。现在测试运行正常。


7
对于大多数人来说,重新安装整个系统并不是一个可行的解决方案。 - bak202
1
@bak202 真的,没错。更好的方法是查看所有日志。这种解决问题的方式实际上是一个很大的问题,也是学习的障碍。@Samyn 不要害怕接触大量的日志,并以“开发者的风格”来解决问题 :) 重新安装系统会浪费你的时间。处理日志可以让你事半功倍。 - Ognyan Dimitrov
4
焦土政策是为了杀一只苍蝇。 - joelmdev
1
你应该买一台新电脑,这样更安全 :) - Eternal21
你知道吗,我最近确实找到了一份新工作,但是一个月后我又遇到了同样的问题。仍然只有这个答案有效。 - requinard
我怀疑只安装Resharper就可以解决问题。 - Sergioet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接