测试方法尚无定论:未运行测试.错误?

Cyb*_*cop 168 c# asp.net-mvc resharper unit-testing asp.net-mvc-4

我有一个测试类,下面我从测试类发布了一个示例测试

namespace AdminPortal.Tests.Controller_Test.Customer
{
    [TestClass]
    public class BusinessUnitControllerTests
    {
        private IBusinessUnitRepository _mockBusinessUnitRepository;
        private BusinessUnitController _controller;

        [TestInitialize]
        public void TestInitialize()
        {
            _mockBusinessUnitRepository = MockRepository.GenerateMock<IBusinessUnitRepository>();
            _controller = new BusinessUnitController(_mockBusinessUnitRepository);
        }

        [TestCleanup]
        public void TestCleanup()
        {
            _mockBusinessUnitRepository = null;

            _controller.Dispose();
            _controller = null;

        }

        #region Index Action Tests
        [TestMethod]
        public void Index_Action_Calls_GetAllBusinessUnit()
        {
            _mockBusinessUnitRepository.Stub(x => x.GetAllBusinessUnit());

            _controller.Index();

            _mockBusinessUnitRepository.AssertWasCalled(x=>x.GetAllBusinessUnit());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行项目时,我得到了以下屏幕 在此输入图像描述

我检查了引用,测试项目引用了主项目.知道为什么测试没有运行或说它们没有结果?

编辑1:

我在这里看到了一个帖子并将我的测试设置的默认处理器架构更改为X64,但它仍然无效.

Chr*_*cey 131

以防上述选项都没有适用于任何人我通过注意我的App.Config中的损坏条目来修复我的错误实例,因为测试项目中缺少nuget包.

  • 同样的问题在这里 如果R#冒泡错误(错误初始化配置系统)会很好,所以很明显为什么没有运行测试. (5认同)
  • 谢谢,对我来说,我错误地将appsettings置于配置之上,将其移动到适当的位置并且它可以工作. (5认同)
  • 我通过nuget添加了specflow,并在App.config中插入了一个条目.这造成了整个麻烦.我创建了一个新的App.config并再次添加了引用,它得到了修复.谢谢你的信息. (3认同)
  • 答对了!谢谢克里斯。在我的情况下,它是log4net节,在`&lt;configSections&gt;`中没有一个行节名称。 (2认同)

小智 43

对我来说这是相当令人沮丧的,但我至少找到了我的案例的解决方案:

如果您的TestMethod是异步的,则它不能为空.它必须返回任务.

希望它可以帮助别人:)


Eli*_*tek 37

我有与resharper相同的问题,我通过更改选项更正了此错误:

Resharper => Options => Tools =>单元测试

我只需取消选中"正在测试的影子复制程序集"选项

  • 不适用于我,我正在使用VS2015 w/Reshaper 10. (10认同)
  • 在查看了大量其他修复程序之后,这为我排序了.我正在使用VS 2013和R#v8.1 (2认同)

Cyb*_*cop 22

这是一个Resharper问题.在Resharper选项 - >工具 - > MSTEST中,我取消选中Use Legacy Runner,现在它可以正常工作.

  • 我在Tools-> Unit Testing-> MsTest下没有该选项.(Resharper 9.2.) (60认同)

Rub*_*uck 15

我遇到了这个问题,结果就像这个问题一样.这个答案为我解决了这个问题.

  1. 取消选中"仅在运行时构建启动项目和依赖项"(选项 - >项目和解决方案 - >构建和运行)
  2. 在Configuration Manager中,确保启动项目和Test项目都已选中"Build".

我第二次遇到这个问题,是因为测试所在的项目的文件路径中有一个&符号.它适用于ReSharper的测试运行器,但不适用于dotCover.从文件路径中删除&符号.

这是dotCover 确认的错误.


Mik*_*ain 12

对我来说,只需清洁和重建解决方案即可修复它.


Rey*_*yhn 11

对我来说,问题是一个损坏的 NUnit/ReSharper 设置XML文件(由于意外的电源短缺).

为了识别错误,我使用以下命令启动了Visual Studio :

devenv.exe /ReSharper.LogFile C:\temp\resharper.log /ReSharper.LogLevel Verbose
Run Code Online (Sandbox Code Playgroud)

检查文件显示以下异常:

09:45:31.894 |W| UnitTestLaunch                | System.ApplicationException: Error loading settings file
System.ApplicationException: Error loading settings file ---> System.Xml.XmlException: Root element is missing.
   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
   at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
   at System.Xml.XmlDocument.Load(XmlReader reader)
   at System.Xml.XmlDocument.Load(String filename)
   at NUnit.Engine.Internal.SettingsStore.LoadSettings()
   --- End of inner exception stack trace ---
   at NUnit.Engine.Internal.SettingsStore.LoadSettings()
   at NUnit.Engine.Services.SettingsService.StartService()
   at NUnit.Engine.Services.ServiceManager.StartServices()
   at NUnit.Engine.TestEngine.Initialize()
   at NUnit.Engine.TestEngine.GetRunner(TestPackage package)
   at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.<>c__DisplayClass1.<RunTests>b__0()
   at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.WithExtensiveErrorHandling(IRemoteTaskServer server, Action action)
Run Code Online (Sandbox Code Playgroud)

请注意,这不是测试项目的app.config!

一个快速的谷歌搜索周围确定了以下文件的罪魁祸首:

%LOCALAPPDATA%\NUnit\Nunit30Settings.xml
Run Code Online (Sandbox Code Playgroud)

它存在,但是空洞的.删除它并重新启动Visual Studio解决了这个问题.

(使用Visual Studio Professional 2017 v15.3.5和ReSharper 2017.2.1).


M.H*_*san 9

我在Resharper Ultimate 2017.2的vs 2017 Update 3中遇到了这个问题

重新启动vs或重新启动计算机无济于事。

我通过清除缓存来解决问题,如下所示:

    Resharper ->options-> Environment ->click the button 'Clear caches'
Run Code Online (Sandbox Code Playgroud)

更新:

在测试窗口的右上角有一个“错误”按钮(我在Resharper 2018中找到)。

如果单击错误按钮,它将显示一条错误消息,可能有助于解决问题。

若要跟踪问题的根源,请在日志模式下运行Visual Studio。在vs 2017中,运行命令:

      devenv /ReSharper.LogFile C:\temp\log\test_log.txt /ReSharper.LogLevel Verbose
Run Code Online (Sandbox Code Playgroud)

运行测试。

查看日志文件test_log.txt并在文件中搜索“错误”。

日志文件对查找可以解决的错误有很大的帮助,也可以将问题与日志文件一起发送给Resharper技术支持团队


mik*_*igs 7

我刚刚解决了这个问题.但是,此线程中没有一个解决方案有效.这就是我做的......

由于R#没有详细说明事情失败的原因,我决定尝试使用内置的VS2013测试运行器.它经历了完全相同的行为,其中没有一个测试运行.但是,查看"输出"窗口,我终于收到一条错误消息:

调用executor'recutiveor:// mstestadapter/v1'时发生异常:对象引用未设置为对象的实例.

这导致我在另一个关于SO的线程中找到了解决方案.相信我,我永远不会猜到问题是什么.

我最近在创建NuGet包时对AssemblyInfo.cs文件进行了一些更改.其中一个更改包括指定汇编文化值"en".

我改变了这个:

[assembly: AssemblyCulture("")] 
Run Code Online (Sandbox Code Playgroud)

对此:

[assembly: AssemblyCulture("en")]`. 
Run Code Online (Sandbox Code Playgroud)

就是这样!那是莫名其妙地破坏了我的单元测试. 但是,我仍然不明白为什么.但至少事情还在继续.在我恢复此更改(即将文化设置回"")后,我的测试再次开始运行.

希望能帮到那里的人.


Bor*_*ris 7

Visual Studio 2017 和 resharper 版本 2018.2.3 发生此错误,但此修复适用于 Visual Studio 2019 版本。

为了让测试在 Resharper 中工作,修复程序只是在撰写本文时更新到最新版本的 Resharper (2019.2.1)。


Kca*_*evo 6

在我的情况下,这是我在app.config中复制连接字符串时所犯的错误..我把它放在configSections标记内!

花了一些时间才意识到......感谢VS intellisense虽然..或者它是resharper?


小智 6

在我的情况下,我收到此错误是因为“发布”模式,其中 UnitTests 项目的构建被简单地关闭。切换回“调试”模式修复了它。

令人惊讶的是,如果 ReSharper 根本找不到 UnitTests 库,它什么也说不出来。说真的,这是一种耻辱;)

希望它会帮助某人


pku*_*rov 6

在我的情况下,[Test]方法只是private.耻辱


Mik*_*und 6

我的问题是我只用nuget安装了NUnit.我没有安装NUnit3TestAdapter,这也是必需的.

Install-Package NUnit3TestAdapter
Run Code Online (Sandbox Code Playgroud)


小智 5

我有类似的问题。VS 2010,c#CLR 2 Nunit 2.5.7,刚刚从VS构建>干净的解决方案有助于解决此问题


Nes*_*hta 5

就我而言,我创建了一个异步测试方法,该方法返回void。返回Task而不是void解决了问题。


won*_*ter 5

就我而言,在添加新项目后,解决方案中某些测试项目中的所有测试都开始不运行。在此处使用 VS 2017 和 ReSharper 2017.1.2。

首先,请确保您没有浪费时间假设您的问题与 ReSharper 相关。如果您使用其单元测试功能(包括单元测试资源管理器),很容易假设 ReSharper 存在问题。在“测试”菜单下打开 Visual Studio 的“测试资源管理器”并尝试“全部运行”。这样做的额外好处是输出窗口将显示一条错误消息,可能会为您指明正确的方向。如果您注意到同一组测试未运行,则可以安全地假设问题出在 Visual Studio 而不是 ReSharper。

我结束了删除和重新添加的一个有效解决方案平台任何CPU,在配置管理器。通过这样做,在保存我的更改并重新打开解决方案后,所有测试再次开始运行。

我相信当我添加新项目并通过使用重新创建平台之一时,解决方案文件中有一个意外的配置条目,它自行纠正。我尝试了 diffing,但很难说出导致问题的原因。