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

问题描述 投票:164回答:41

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

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());
        }
    }
}

当我运行项目时,我得到了以下屏幕

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

编辑1:

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

c# asp.net-mvc asp.net-mvc-4 unit-testing resharper
41个回答
131
投票

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


6
投票

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

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


6
投票

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


6
投票

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

Install-Package NUnit3TestAdapter

5
投票

我有类似的问题。 VS 2010,c#CLR 2 Nunit 2.5.7,刚建立> VS的干净解决方案帮助解决了这个问题


5
投票

在我的情况下,我创建了一个异步测试方法,返回void。回归Task而不是void解决了这个问题。


4
投票

你最近添加了任何DLL依赖吗? ... 像我这样的

我刚刚遇到了同样的问题,并且在测试输出窗口或其他实际应用中没有任何线索是非常恼人的。

原因是非常愚蠢的:我刚刚将依赖项添加到子项目中的其他外部DLL,并且主项目App确实在更改后构建并正确运行。但我的单元测试是在主应用程序的姐妹项目中,因此也依赖于调用DLL的这个更改的子项目...但是,测试项目的运行时位置不是主应用程序的运行时位置!因此,更改构建以将缺少的DLL复制到测试运行时目录中可以解决问题。


4
投票

我正在使用VS2013,ReSharper 9.1和ReSharper和Moq的MSpec扩展。我遇到了同样的“不确定”错误。

事实证明,来自Moq的我的一个Mock没有初始化,只是声明了。 Ones初始化了所有测试再次运行。


4
投票

在我的情况下,我得到了这个错误,因为'Release'模式,UnitTests项目的构建只是关闭。切换回“调试”模式修复它。

令人惊讶的是ReSharper根本无法找到任何内容,以至于根本找不到UnitTests库。说真的,这是一种耻辱;)

希望它会对某人有所帮助


4
投票

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

首先,请确保您没有浪费时间假设您的问题与ReSharper相关。如果使用单元测试功能(包括单元测试资源管理器),很容易假设ReSharper出现问题。在Test菜单下打开Visual Studio的Test Explorer,然后尝试Run All“。这样做的另一个好处是输出窗口会显示一条错误信息,指出你正确的方向。如果你注意到同一组测试没有运行,那么可以安全地假设问题是Visual Studio而不是ReSharper。

我最终在Configuration Manager中删除并重新添加了一个Active解决方案平台Any CPU。通过这样做,在保存更改并重新打开解决方案后,所有测试再次开始运行。

我相信当我添加新项目并使用重新创建其中一个平台时,解决方案文件中存在意外的配置条目,它会自行更正。我尝试过差异化,但很难说出改变的原因导致了这个问题。


4
投票

对于那些在.NET Core 2.0我的测试项目Visual Studio 2017 Community (v15.3 3)遇到这个问题的人。我也使用JetBrains ReSharper Ultimate 2017.2 Build 109.0.20170824.131346这个错误 - 我发布了一个bug

JetBrains建议从头开始创建一个新的测试项目来重现它。当我这样做并且测试工作正常时,我找到了导致问题的原因:

  • *.csproj文件中删除它:
  • Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}

当我这样做 - 测试开始正常。


43
投票

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

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

希望它可以帮助别人:)


3
投票

我正在使用VS2010,NUnit 2.6.3(虽然内部ReSharper说它使用2.6.2?),ReSharper 7.7.1和NCrunch 2.5.0.12并且遇到了同样的“......测试没有结果......”的事情与NUnit,但NCrunch说一切都很好。在今天的大部分时间里,NUnit和NCrunch一致同意哪些测试很开心,哪些需要重构,然后发生了一些我仍然不理解的事情,并且有一段时间NCrunch说我测试失败了(但是通过他们的测试显示它们到了通过),然后决定他们都在工作,NUnit开始抱怨我的所有测试,除了一个同样的消息“..测试是不确定的......”我再次能够单步进入通过即使NUnit继续将其显示为“不确定”)。

我尝试了上面的几个建议无济于事,最后关闭了VS2010并重新打开了解决方案。瞧,现在我的所有测试都很高兴,NCrunch和NUnit再次报告相同的结果。不幸的是我不知道是什么改变导致他们不同步,但关闭和重新打开VS2010似乎已经修复了它。

也许其他人会碰到这个并且能够使用这个简单的(如果最终不满意,因为你不知道真正的修复是什么)解决方案。


3
投票

我有同样的问题。罪魁祸首是外部参考与我的项目构建设置不兼容。为了解决这个问题,我右键单击了项目 - > properties-> build-> Platform Target->从Any CPU更改为x86。

我正在使用的特定* .dll是System.Data.SQLite。特定的* .dll是32位操作的硬编码。 “Any CPU”设置尝试将其加载为64位。


3
投票

我的解决方案

NUnit 3.2.0与Resharper有一些问题 - 降级到2.6.4:

update-package nunit -version 2.6.4

3
投票

在我的情况下,我的测试方法是私有的,我把它改为公共,它的工作原理。


3
投票

由于缺少(未损坏)App.Config文件而导致。添加新的(添加 - >新项目... - >应用程序配置文件)修复它。


3
投票

我遇到了同样的问题。它与NUnit 3.5和Resharper 9.2之间的兼容性版本有关,因为它是通过从NUnit 3.5降级到2.6.4来解决的。它对我有用。祝好运。


3
投票

如果你正在使用xUnit,我解决了安装xunit.running.visualstudio包的问题。 (目前使用xUnit 2.3.1VS17 Enterprise 15.3.5


3
投票

我使用NUnit框架运行任何测试都遇到了同样的问题。 “不确定:测试不运行”Visual Studio 2017 15.5.6

ReSharper Ultimate 2017.3.3 Build 111.0.20180302.65130

已解决将项目依赖项添加到Microsoft.NET.Test.Sdk


2
投票

对于谁急于执行测试,我不得不使用VS 2017测试资源管理器来运行测试;

enter image description here

enter image description here


1
投票

我有完全相同的问题,没有任何帮助。

最终我看到我的单元项目和单元测试项目的命名空间不匹配。

我的单元项目的命名空间是unit.project,测试项目名为unit.project.tests,但测试的默认命名空间与单元相同,都是unit.project。

一旦我将命名空间更新为不同(每个项目一个命名空间),一切正常!


37
投票

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

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

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


1
投票

对我来说,一个测试创建了这个错误,结果我无意中跳过了测试。在屏幕的左侧,单击以放置断点,您可能会注意到您的测试被设置为跳过(有一个微软图标表示这一点)。我启用了测试,错误消失了。


22
投票

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


15
投票

我遇到了这个问题,结果与this problem over here相同。 This answer solved the problem for me

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

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

这是带dotCover的confirmed bug


12
投票

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


11
投票

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

为了识别错误,我使用this command启动了Visual Studio:

devenv.exe /ReSharper.LogFile C:\temp\resharper.log /ReSharper.LogLevel Verbose

检查文件显示以下异常:

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)

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

围绕quick googling确定以下文件为罪魁祸首:

%LOCALAPPDATA%\NUnit\Nunit30Settings.xml

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

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


7
投票

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

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

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

这导致我与another thread on SO解决方案。相信我,我永远不会猜到问题是什么。

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

我改变了这个:

[assembly: AssemblyCulture("")] 

对此:

[assembly: AssemblyCulture("en")]`. 

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

希望能帮到那里的人。


7
投票

我使用Resharper Ultimate 2017.2在2017年更新3中遇到了这个问题

重启vs或重启机器无济于事。

我通过清除Cache来解决了这个问题,如下所示:

    Resharper ->options-> Environment ->click the button 'Clear caches'

更新:

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

如果单击错误按钮,则会显示可能有助于解决问题的错误消息。

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

      devenv /ReSharper.LogFile C:\temp\log\test_log.txt /ReSharper.LogLevel Verbose

运行测试。

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

日志文件非常有助于找到您可以解决的错误,或者您可以将日志文件的问题发送到technical support team of Resharper

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