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


172

我有一个测试班,下面我发布了一个测试班的样本测试

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:

我在这里看到了一篇文章,并将测试设置的默认处理器体系结构更改为X64,但仍然无法正常工作。


3
这是ReSharper中的一个已知问题。这里有一些潜在的解决方案:stackoverflow.com/questions/12191352/…
克里斯·曼特

3
您是否进行了清洁和重建?我记得在VS2010中有些古怪,在更新和重建程序集后会丢失对程序集的引用。
马克·沃尔什

@ChrisMantle我检查了一下并更改了我的默认处理器体系结构,但仍然无法使用
Cyber​​cop

@MarkWalsh我正在使用VS2012。我仍然按照您所说的那样清理并重建了解决方案,但是仍然无法正常工作
Cyber​​cop

Answers:


133

万一上述选项对任何人都不起作用,我会注意到由于测试项目中缺少nuget包而在App.Config中注意到一个损坏的条目,从而修复了此错误的实例。


5
这里同样的问题。如果R#能够使错误冒泡(错误初始化配置系统),那就太好了,因此很明显为什么不运行测试。
Geoffrey Hudik

5
谢谢,对我来说,我错误地将appsettings放在了配置之上,将其向下移动到适当的位置,它可以正常工作。
anIBMer 2014年

3
我通过nuget添加了specflow,它在App.config中插入了一个条目。这就造成了整个麻烦。我创建了一个新的App.config并再次添加了引用,此引用已得到修复。感谢您提供信息。
Vinee

我可以证实,在最初发布此帖子后将近两年,这似乎仍然是可行的解决方案(我正在使用VS 2015和ReSharper 9.2)。
史蒂文·

2
答对了!谢谢克里斯。在我的情况下,它是log4net节,在中没有行号<configSections>
datps

47

对我来说,这很令人沮丧,但是我至少找到了解决我案件的方法:

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

希望它可以帮助某人:)


37

我在使用reshaper时遇到了相同的问题,并通过更改选项纠正了此错误:

Resharper =>选项=>工具=>单元测试

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


2
在查看了其他修复程序之后,这为我进行了排序。我正在使用VS 2013和R#v8.1
Spikeh 2014年

10
没有为我工作,我使用VS2015 W /整形器10
Nemeas

这使我在NETCore测试项目上与VS2017和Resharper Ultimate 2017.2.2一起工作。
塔斯克

为我工作,我现在不必清除测试的构建。谢谢Elias。
PhoenixPan

22

这是一个Resharper问题。在Resharper选项->工具-> MSTEST中,我未选中Use Legacy Runner,现在可以使用了。


61
我在“工具”->“单元测试”->“ MsTest”下没有该选项。(Resharper 9.2。)
塞德洛夫2015年

我在R#2017.2。中也没有这样的选择。
realsonic

对我来说,选项是工具->单元测试-> MsTest,取消选中会有所帮助。
Marcel

15

我遇到了这个问题,结果和这里的这个问题一样。这个答案为我解决了问题

  1. 取消选中“仅构建启动项目和对运行的依赖项”(选项->项目和解决方案->生成并运行)
  2. 在配置管理器中,确保启动项目和测试项目均已选中“生成”。

我第二次遇到此问题,这是由于测试所在项目的文件路径中的&号所致。它与ReSharper的测试运行程序兼容,但与dotCover的测试运行程序兼容。从文件路径中删除与号。

这是dotCover 的已确认错误


1
为我工作。带有ReSharper 2017.1.3的VS2017 :-)
Lars Holdgaard

12

对我来说,只需清洁和重建解决方案即可解决问题。


在Git中更改分支时,我(不小心)将更改恢复到项目文件中。当我尝试通过右键单击该类(代码窗口仍处于打开状态)运行测试时,由于未包含在解决方案中,因此未运行。
mortb

12

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

为了确定错误,我使用以下命令启动了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!

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

%LOCALAPPDATA%\NUnit\Nunit30Settings.xml

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

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


12

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

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

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

    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并在文件中搜索“错误”。

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


7

我也解决了这个问题。但是,该线程中的所有解决方案均无效。这就是我所做的...

由于R#没有提供任何有关失败原因的详细信息,因此我决定尝试使用内置的VS2013测试运行程序。在没有进行任何测试的情况下,它经历了完全相同的行为。但是,在“输出”窗口中查看时,我终于收到一条错误消息:

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

这把我引向了另一个话题了具有解决方案的。相信我,我永远都不会猜到问题出在哪里。

我最近在创建NuGet软件包时对AssemblyInfo.cs文件进行了一些更改。更改之一包括将汇编区域性值指定为“ en”。

我改变了这个:

[assembly: AssemblyCulture("")] 

对此:

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

就是这样!这就是莫名其妙地破坏了我的单元测试的原因。 我还是不明白为什么。但是至少事情再次发生了。恢复此更改(即将区域性设置回“”)后,我的测试再次开始运行。

希望可以帮助到那里的人。


1
我改变了汇编的文化,R#停止运行测试。
Valentine Zakharenko

谢谢!检查输出窗口显示了我的问题,该课程未公开!
乔尼·费尔德曼


7

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

Install-Package NUnit3TestAdapter

这是令人沮丧的问题之一,对于实际问题您几乎一无所知!
Ben Power

6

就我而言,这是我在复制app.config中的连接字符串时犯的一个错误。我已将其放在configSections标记内!

花了我一段时间才意识到...虽然还是感谢VS intellisense ..还是它很讨人喜欢?


就我而言,这是配置文件无效更改的结果
evgenyl 2014年

我的问题是由不良的Git冲突解决引起的,导致我的已解决配置文件中保留了Head更改信息
KiwiSunGoddess 2016年

几乎发生了同样的事情,当我删除了多余的appSettings部分并将连接字符串移至它可以工作的原始appSettings时,我已经向冗余的appSettings部分添加了连接字符串。
Sirar Salih,

关于损坏的app.config的答案与第一个stackoverflow.com/a/21386881/52277
Michael Freidgeim'4


5

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


4

您最近是否添加了任何DLL依赖项?... 像我这样的

我只是遇到了同样的问题,没有在测试输出窗口或其他实用程序中获得任何线索,这非常令人气愤。

原因非常愚蠢:我只是在子项目中将依赖项的前一天添加到了另一个外部DLL中,并且更改后,主项目App确实已正确构建并运行。但是我的单元测试位于主应用程序的姊妹项目中,因此也依赖于此已更改的子项目,在该子项目中调用了DLL ...然而,测试项目的运行时位置不是主应用程序的运行时位置!因此,更改生成以将丢失的DLL复制到测试运行时目录中即可解决此问题。


4

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

原来,来自Moq的我的Mock中的一个未被初始化,仅被声明。初始化所有测试的人再次运行。


4

在我的情况下,由于“发布”模式(仅关闭UnitTests项目的构建),我遇到了此错误。切换回“调试”模式可修复该问题。

ReSharper在根本找不到UnitTests库的情况下什么也没说,实在令人惊讶。严重的是,这是一种耻辱;)

希望对别人有帮助


4

就我而言,在我添加新项目之后,解决方案中某些测试项目中的所有测试均未开始运行。在此处将VS 2017与ReSharper 2017.1.2一起使用。

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

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

我相信,当我添加新项目并使用重新创建的平台之一来解决问题时,解决方案文件中存在意外的配置条目,它可以自行更正。我尝试了diff,但是很难说出是什么引起了问题。


就我而言,我在app.config <AppConfig>中而不是<AppSettings>中有一个愚蠢的错字。我喜欢ReSharper,但他们确实需要处理错误消息!
MichaelMilom '18年

4

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

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

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

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


德米特里,谢谢你,它对我有帮助。您能解释一下这是什么服务吗?
Vladimir Melekh '19


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开始抱怨我的所有测试,除了一条带有相同消息“ ..test is inconclusive ...”的消息外,即使NUnit继续,我也可以单步通过以显示为“不确定”)。

我尝试了上面的一些建议无济于事,最后还是关闭了VS2010并重新打开了解决方案。瞧,现在我所有的测试都又高兴了,NCrunch&NUnit再次报告了相同的结果。不幸的是,我不知道是什么原因导致它们不同步,但是关闭和重新打开VS2010似乎已解决了该问题。

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


3

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

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


平台目标不匹配也可能通过引用同一解决方案中的其他项目而发生。
Chaquotay

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.6.1编译的Test程序集,而我的主要Test程序针对3.7.1进行了编译。降级至3.6.1,现在一切正常。
汤姆

ReSharper 2017.3.2和NUnit 3.11就是这种情况。请参阅有关nunit的评论github.com/nunit/nunit/issues/3086#issuecomment-466988760
Puterdo Borato


3

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

ReSharper Ultimate 2017.3.3内部版本111.0.20180302.65130

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


在我的情况没有帮助
梅德阿夫托诺莫夫

2

对于急于执行测试的人员,我不得不使用VS 2017测试浏览器来运行测试。

在此处输入图片说明

在此处输入图片说明


2

Visual Studio 2017和重新共享版本2018.2.3发生了此错误,但此修复程序适用于Visual Studio 2019版本。

要使测试在Resharper中起作用,此修复程序只是在撰写本文时将其更新为最新版本的Resharper(2019.2.1)。


1

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

最终,我发现单元项目和单元测试项目的命名空间不匹配。

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

一旦我将名称空间更新为不同的名称(每个项目一个名称空间),所有东西都起作用了!


是的,我有同样的问题。想法可能是使测试项目和目标项目相同,以便于访问,但是它与测试运行器捆绑在一起,并在OP中产生此问题。
atconway
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.