我有一个测试类,下面我发布了测试类的样本测试
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,但它仍然不起作用。
答案 0 :(得分:129)
以防上述选项都不适用于任何人我通过在App.Config中注意到由于测试项目中缺少nuget包而导致损坏的条目来修复此错误的实例。
答案 1 :(得分:42)
对我而言,这是相当令人沮丧的,但我至少找到了解决案例的方法:
如果您的TestMethod是异步的,则它不能为空。它必须返回任务。
希望它可以帮助某人:)
答案 2 :(得分:37)
我有与resharper相同的问题,我通过更改选项更正了此错误:
Resharper =&gt;选项=&gt;工具=&gt;单元测试
我只需取消选中“正在测试的影子复制程序集”选项
答案 3 :(得分:22)
这是一个Resharper问题。在Resharper选项 - &gt;工具 - &gt; MSTEST中,我取消选中使用旧版亚军,现在它可以正常工作。
答案 4 :(得分:15)
我遇到了这个问题,结果与this problem over here相同。 This answer solved the problem for me
- 取消选中“仅在运行时构建启动项目和依赖项”(选项 - &gt;项目和解决方案 - &gt;构建并运行)
- 在Configuration Manager中,确保启动项目和测试项目都已选中“Build”。
醇>
我第二次遇到这个问题,是因为测试所在项目的文件路径中有一个&符号。它适用于ReSharper的测试运行器,但不适用于dotCover。从文件路径中删除&符号。
这是带有dotCover的confirmed bug。
答案 5 :(得分:12)
对我而言,只需清洁并重建解决方案即可修复它。
答案 6 :(得分: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)
请注意,这是 NOT 测试项目的app.config!
围绕quick googling确定以下文件为罪魁祸首:
%LOCALAPPDATA%\NUnit\Nunit30Settings.xml
它存在但是空洞。删除它并重新启动Visual Studio解决了这个问题。
(使用Visual Studio Professional 2017 v15.3.5和ReSharper 2017.2.1)。
答案 7 :(得分:7)
我也解决了这个问题。但是,此线程中没有一个解决方案有效。这就是我做的......
由于R#没有详细说明事情失败的原因,我决定尝试内置的VS2013测试运行器。它经历了完全相同的行为,其中没有一个测试运行。但是,查看“输出”窗口,我最后收到一条错误消息:
调用执行程序时发生异常 &#39; executor:// mstestadapter / v1&#39;:对象引用未设置为实例 一个对象。
这让我找到了another thread on SO的解决方案。相信我,我永远不会猜到问题是什么。
我最近在创建NuGet包时对AssemblyInfo.cs文件进行了一些更改。其中一个变化包括指定&#34; en&#34;。
的汇编文化值我改变了这个:
[assembly: AssemblyCulture("")]
到此:
[assembly: AssemblyCulture("en")]`.
就是这样!这是莫名其妙地破坏了我的单元测试的原因。然而,我仍然不明白为什么。但至少事情还在继续。在我恢复此更改后(即将文化设置回&#34;&#34;),我的测试再次开始运行。
希望能帮到那里的人。
答案 8 :(得分:6)
就我而言,[Test]
方法只是private
。 S-H-A-M-E
答案 9 :(得分:6)
在我的情况下,我在app.config中复制连接字符串时犯了一个错误。 我把它放在configSections标签里面了!
我花了一段时间才意识到这一点......感谢VS intellisense虽然..或者它是resharper?
答案 10 :(得分:6)
我的问题是我只用nuget安装了NUnit。我还没有安装NUnit3TestAdapter,这也是必需的。
Install-Package NUnit3TestAdapter
答案 11 :(得分:5)
我有类似的问题。 VS 2010,c#CLR 2 Nunit 2.5.7,刚刚构建&gt;来自VS的干净解决方案帮助解决了这个问题
答案 12 :(得分:5)
在我的情况下,我创建了一个返回void
的异步测试方法。返回Task
代替void
解决了这个问题。
答案 13 :(得分:5)
我在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并在文件中搜索“错误”。
日志文件对查找可以解决的错误或将日志文件的问题发送到technical support team of Resharper很有帮助。
答案 14 :(得分:4)
我正在使用VS2013,ReSharper 9.1以及来自ReSharper和Moq的MSpec扩展。我遇到了同样的“不确定”错误。
事实证明,来自Moq的我的一个Mock没有初始化,只是声明了。 Ones初始化了所有测试再次运行。
答案 15 :(得分: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}
“强>
当我这样做时 - 测试开始正常。
答案 16 :(得分:4)
在我的情况下,由于&#39;发布&#39;我收到此错误简单地关闭了UnitTests项目的构建模式。切换回&#39; Debug&#39;模式修复它。
令人惊讶的是ReSharper根本无法找到任何内容,以防它根本无法找到UnitTests库。说真的,这是一种耻辱;)
希望它会帮助某人
答案 17 :(得分:4)
就我而言,在我添加新项目后,解决方案中某些测试项目中的所有测试开始没有运行。在这里使用VS 2017和ReSharper 2017.1.2。
首先,请确保您没有浪费时间假设您的问题与ReSharper相关。如果您使用其单元测试功能(包括 Unit Test Explorer ),很容易假设ReSharper出现问题。在 Test 菜单下打开Visual Studio的 Test Explorer 并尝试全部运行“。这样做的另一个好处是输出窗口将显示一条错误消息,可能指向正确的方向。如果您注意到未运行同一组测试,则可以安全地假设问题出在Visual Studio而不是ReSharper。
我最终在 Configuration Manager 中删除并重新添加 Active解决方案平台, Any CPU 之一。通过这样做,在保存更改并重新打开解决方案后,所有测试再次开始运行。
我相信当我添加新项目并使用重新创建其中一个平台时,解决方案文件中存在意外的配置条目,它会自行更正。我尝试过差异化,但很难说出改变后导致问题的原因。
答案 18 :(得分:4)
您最近是否添加了任何DLL依赖项? ......跟我一样
我刚遇到同样的问题,在测试输出窗口或其他实际情况下没有任何线索是非常恼火的。
原因非常愚蠢:我刚刚将依赖项添加到子项目中的其他外部DLL,并且主项目App确实在更改后构建并正确运行。但我的单元测试是在主应用程序的姐妹项目中,因此也依赖于调用DLL的这个更改的子项目...但是,测试项目的运行时位置不是主应用程序的运行时位置! 因此,更改构建以将缺少的DLL复制到测试运行时目录中可以解决问题。
答案 19 :(得分:3)
我遇到了同样的问题。它与NUnit 3.5和Resharper 9.2之间的兼容性版本有关,因为它是通过从NUnit 3.5降级到2.6.4来解决的。 它对我有用。 祝你好运。
答案 20 :(得分:3)
由于缺少(未损坏)App.Config文件而导致。添加新的(添加 - >新项目... - &gt;应用程序配置文件)修复了它。
答案 21 :(得分:3)
如果您使用xUnit
,我解决了安装xunit.running.visualstudio
包的问题。
(目前正在使用xUnit 2.3.1
和VS17 Enterprise 15.3.5
)
答案 22 :(得分:3)
我使用NUnit框架运行任何测试都遇到了同样的问题。 &#34;不确定:测试没有运行&#34; Visual Studio 2017 15.5.6
ReSharper Ultimate 2017.3.3 Build 111.0.20180302.65130
已解决将项目依赖项添加到Microsoft.NET.Test.Sdk
答案 23 :(得分:3)
我的解决方案:
NUnit 3.2.0与Resharper有一些问题 - 降级到2.6.4:
update-package nunit -version 2.6.4
答案 24 :(得分:3)
我使用的是VS2010,NUnit 2.6.3(虽然内部ReSharper说它使用的是2.6.2?),ReSharper 7.7.1&amp; NCrunch 2.5.0.12并且遇到了同样的问题......测试没有结果......&#34; NUnit的事情,但NCrunch说一切都很好。今天的大部分时间都是NUnit&amp; NCrunch一致同意哪些测试很开心,哪些需要重构,然后发生了一些我仍然不理解的事情,并且有一段时间NCrunch说我没有通过测试(但是通过它们表明它们通过了),然后决定他们都在工作,NUnit开始抱怨我的所有测试,除了一个同样的消息&#34; ...测试没有结果......&#34;即使NUnit继续表现为&#34;没有结果&#34;),我再次能够单步进入传球。
我尝试了上面的几条建议无济于事,最后关闭了VS2010&amp;重新打开解决方案。瞧,我现在所有的测试都很高兴,NCrunch&amp; NUnit再次报告相同的结果。不幸的是,我不知道是什么改变导致他们不同步,但关闭&amp;重新开放VS2010似乎已经修复了它。
也许其他人会碰到这个并且能够使用这个简单的(如果最终不满意,因为你不知道真正的修复是什么)解决方案。
答案 25 :(得分:3)
在我的情况下,我的测试方法是私有的我将其更改为公开并且有效。
答案 26 :(得分:3)
我有同样的问题。罪魁祸首是外部参考与我的项目构建设置不兼容。为了解决这个问题,我右键点击了项目 - &gt; properties-&gt; build-&gt; Platform Target-&gt;从任何CPU更改为x86。
我正在使用的特定* .dll是System.Data.SQLite。特定的* .dll是32位操作的硬编码。 &#34;任何CPU&#34;设置尝试将其加载为64位。
答案 27 :(得分:2)
答案 28 :(得分:2)
此错误在Visual Studio 2017和Resharper版本2018.2.3中发生,但此修复适用于Visual Studio 2019版本。
要在Resharper中进行测试的修复程序只是在撰写本文时将其更新为最新版本的Resharper(2019.2.1)。
答案 29 :(得分:1)
答案 30 :(得分:1)
我知道这个问题的答案是/ several /,但是我还有另一个独特的答案,我没有将其视为解决问题的一种方法。我希望这可以帮助其他人。
要使用单元测试会话,一个外部依赖项是Microsoft.Net.Test.Sdk,在VS管道中的某个点,xunit.runner.visualstudio对于ReSharper单元测试会话风格的测试运行器已停止正常工作。以下是我如何解决此问题的方法以及解决方法。
我的问题和答案来自于将我的一些net451库转换为netStandard 2.0以使我的团队能够在Core或Framework中进行开发时看到的不确定性。当我进入新近完成的netStandard2.0库并开始将其旧的单元测试项目转换为新的解决方案时,遇到了很多问题。您不能在标准的net项目中运行单元测试,因此对于我的单元测试项目,我选择降级为net472。
在这一点上,我将注意到,自.net Framework以来,.csproj文件进行了更改。为了与nupkg文件和.net Standard库的构建包完全集成,您需要更改引用以使用PackageReference而不是packages.config进行处理。
我有一些与Windows耦合的库,这些库无法转换为netStandard,因此在更新其依赖项以使用新的netStandard库时,我意识到如果他们的.csproj文件是旧的,则dotnet pack命令将会失败。格式。要解决此问题,不仅需要将它们从packages.config转换为PackageReference,还必须手动将.csproj文件更新为较新的VS2017格式。这样一来,这些库就可以像引用netStandard2.0依赖项的net472库一样干净地内置到nuget包中。
有一个工具可以为您转换程序包的组织行为,它保留旧的.csproj样式,并在.csproj中使用PackageReference。由于上述原因,我习惯了手动将.csproj样式迁移为VS2017格式。
总而言之,当我同时使用PackageReference作为依存关系和我的单元测试项目.csproj文件都是VS2017样式时,我收到了不确定的消息。
我能够通过删除项目,完全按照net472中的方式重新创建它来解决此问题,而不是将其转换为VS2017 .csproj格式,而是将其保留为旧格式。
无论出于何种原因,旧格式都可以完成我的测试会话。
我很好奇几件事:
我不知道这个答案是ReSharper需要为每个人修复的一个真正的解决方案,但是它对我来说是可复制的,并且解决了将单元测试项目保留为旧版本.csproj的问题。文件,至少当我有一个引用netStandard2.0库的net472单元测试项目时。
还应注意,VS2017 .csproj文件不赞成在Properties文件夹中使用AssemblyInfo.cs文件,我不确定这是否也会导致单元测试会话出现问题。
答案 31 :(得分:1)
对于仍然无法解决问题的用户,请在管理Nuget软件包时检查Consolidate
标签。
原来我们的单元测试项目引用了另一个版本,导致了这个完全模糊的错误。
答案 32 :(得分:1)
在我的案例中发现TestCaseSource的参数个数与测试方法中的参数不同。
[Test, TestCaseSource("DivideCases")]
public void DivideTest(int n, int d, int q)
{
Assert.AreEqual( q, n / d );
}
static object[] DivideCases =
{
new object[] { 12, 3 },
new object[] { 12, 2 },
new object[] { 12, 4 }
};
这里DivideCases中的每个对象数组都有两个项,应该是3,因为DivideTest方法有3个参数。
答案 33 :(得分:1)
就我而言,我从unittestproject引用了2个项目。两个引用的项目都使用了具有相同名称的dll,但版本不同。
我在Visual Studio中没有注意到这一点。我注意到了Eventviewer中的错误。
为了解决这个问题,我在unittestproject的app.config中使用了bindingRedirect来修复dll版本。
答案 34 :(得分:1)
我遇到了完全相同的问题但没有任何帮助。
最终我发现我的单元项目和单元测试项目的命名空间不匹配。
我的单元项目的命名空间是unit.project,测试项目名为unit.project.tests,但测试的默认命名空间与单元相同,都是unit.project。
一旦我将命名空间更新为不同(每个项目一个命名空间),一切正常!
答案 35 :(得分:1)
对我来说,一次测试创建了这个错误,结果我无意中跳过了测试。在屏幕的左侧,您单击以放置断点,您可能会注意到您的测试被设置为跳过(有一个微软图标表示这一点)。我启用了测试,错误就消失了。
答案 36 :(得分:1)
非常奇怪的行为。
刚刚移动了最近添加到app.config底部的新appsetting条目解决了我的问题。
<appSettings>
<add key="xxxxxx" value="xxxxx" />
</appSettings>
希望这有助于某人
答案 37 :(得分:1)
我在VS2013和Resharper9中遇到了同样的错误。问题是因为我忘了用[测试] :)注释测试方法 希望这有助于任何人
答案 38 :(得分:1)
我的班级的所有测试在一些代码更改后变得不确定(他们之前已经过去了)。
似乎我在测试类中添加了一个新字段:
private readonly Foo _foo = CreateFoo();
问题在于&#39; CreateFoo()&#39;内部抛出异常,所以它发生在所有测试中,而不是失败,它们都变得不确定。
答案 39 :(得分:1)
就我而言,ReSharper在测试窗口中给了我这个额外的例外:
2017.06.15 12:56:57.621 ERROR Exploration failed with the exception:
System.AggregateException: One or more errors occurred. ---> System.Threading.Tasks.TaskCanceledException: A task was canceled.
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at JetBrains.ReSharper.UnitTestFramework.Launch.Stages.DiscoveryStage.Run(CancellationToken token)
---> (Inner Exception #0) System.Threading.Tasks.TaskCanceledException: A task was canceled.<---
最后,在配置管理器中根本没有设置发出此错误的测试项目。选中复选框以构建2个测试项目并为我重新排序。
答案 40 :(得分:0)
当我升级到.NET Core 1.1.0
时,此问题就开始了通过将以下依赖项添加到测试项目的project.json来解决:
"Microsoft.DotNet.InternalAbstractions": "1.0.500-preview2-1-003177"
答案 41 :(得分:0)
答案 42 :(得分:0)
就我而言(Visual Studio Community 2017版本15.2),问题的根源是加载VS 2017中引入的项目的新方法,即“轻量级解决方案负载”。
In&#34;单元测试会议&#34;窗口我注意到解决方案的测试方法应该少一些。我必须在&#34;解决方案资源管理器&#34;中手动打开每个单元测试项目。然后才加载并通过所有测试。
解决此问题的一种方法是禁用&#34;轻量级解决方案加载&#34;右键单击&#34;解决方案资源管理器&#34;并设置&#34;禁用轻量级解决方案加载&#34;。
答案 43 :(得分:0)
对我来说,问题是一个异步调用,它没有以任何方式等待。
dc.Start(); // Asynchronous, it is mocked on this particular test, so i did not bother blocking the test.
将其更改为:
dc.Start().ContinueWith(t =>
{
waitHandle.Set();
});
waitHandle.WaitOne(60000); // wait dc start
该测试再次开始适用。
答案 44 :(得分:0)
就我而言,我的应用程序配置文件app.config中有一个错误。我将appsettings放置在configSections上方,而不是将其放置在内部。因此,损坏的配置文件可能是Resharper无法运行响应不确定的测试的原因。
答案 45 :(得分:0)
我有一个测试类中的所有测试都因此问题而失败,其他所有运行正常。后来我在此类的测试之一中的[ignore]属性中发现错误。
答案 46 :(得分:0)
解决此问题的另一种方法:
在另一个环境(例如,TeamCity)中运行测试,然后查看您的REAL问题。我的问题是绑定重定向到System.Web.Mvc 5.2.6.0的错误(我的计算机上未安装)。
答案 47 :(得分:0)
我的问题已经通过最肤浅的解决方案得以解决:
将Moq nuget包添加到测试项目中解决不确定的测试方法,然后可以删除nuget包。
添加Moq软件包后,我的测试方法将使用以下nuget软件包运行:Castle.Core(4.4.0),Moq(4.13.1),NUnit(3.12.0),System.Runtime.CompilerServices.Unsafe(4.5 .0)和System.Threading.Tasks.Extensions(4.5.1)
在删除了上面的大多数nuget软件包之后,我的测试方法仍然仅使用NUnit(3.12.0)运行。
欣赏是否有人知道为什么会发生这种情况。
答案 48 :(得分:0)
在我的情况下,这是由于传入了TestCase中的\ r \ n字符。不知道为什么它会导致间歇性问题,因为它在大多数情况下都有效。但是,如果我删除\ r \ n,测试永远不会产生结果:
[TestCase("test\r\n1,2\r\n3,4", 1, 2)]
public void My_Test(string message, double latitude, double longitude)
答案 49 :(得分:0)
希望这对其他人有帮助,我的解决方法是更新软件包,进行了合并,并且使所有使用相同软件包的工作都为我解决了这个问题。 GL!
答案 50 :(得分:0)
我在解决方案中的项目之间的 nuget 依赖项中存在版本不匹配。使用 Visual Studio 中的整合功能有助于识别和解决此问题。
答案 51 :(得分:-1)
我使用ReSharper Build来解决这个问题。
ReSharper => Options => Tools => Build => General => Use ReSharper Build