测试方法不确定: 测试没有运行。错误?

我有一个测试类,在下面我发布了一个来自测试类的示例测试

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

当我运行该项目时,我得到下面的屏幕 enter image description here

我检查了参考和测试项目有主要项目的参考。 知道为什么测试没有进行或者说没有结果吗?

编辑1:

我看到了一篇文章 给你,并将我的测试设置的默认处理器架构更改为 X64,但它仍然不能工作。

135858 次浏览

在 Resharper 选项-> Tools-> MSTEST 中,我取消了 Use Legacy Runner 的选项,现在它可以工作了。

我在 resharper 上遇到了同样的问题,我通过改变一个选项来纠正这个错误:

Resharper = > Options = > Tools = > Unit Test

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

对我来说,简单的清洁和重建解决方案固定它。

为了防止上述选项对任何人都不起作用,我通过注意到应用程序中的一个损坏条目修复了这个错误的实例。配置,因为测试项目中缺少一个 nuget 包。

我也有类似的问题。VS 2010,c # CLR 2 Nunit 2.5.7,只要从 VS 构建 > clean Solution 就可以帮助解决这个问题

我刚刚也解决了这个问题。然而,在这个帖子中没有一个解决方案是有效的。以下是我所做的:

由于 R # 没有给出任何关于失败原因的细节,我决定尝试内置的 VS2013测试运行程序。它经历了完全相同的行为,没有一个测试运行。然而,在 输出窗口中,我最终得到了一个错误消息:

enter image description here

调用执行器时发生异常 执行器://mstestAdapter/v1’: 未设置为实例的对象引用 一个物体。

相信我,我永远也猜不到问题出在哪里。

我最近在创建 NuGet 包时对 AssemblyInfo.cs 文件做了一些修改。其中一项更改包括指定程序集区域性值“ en”。

我改了这个:

[assembly: AssemblyCulture("")]

回到这里:

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

就是这样!这就是令人费解地破坏了我的单元测试的原因。然而,我还是不明白为什么。但至少一切又恢复正常了。在我恢复了这个更改(即将区域性设置回“”)之后,我的测试再次开始运行。

希望能帮到别人。

我使用的是 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似乎已经修复了它。

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

在我的例子中,我在复制 app.config 中的 Connectionstring 时犯了一个错误。 我已经把它放在配置标签里面了!

我花了一段时间才意识到... 感谢 VS 智慧感觉. . 还是它更锐利?

我也有同样的问题,但是没有任何帮助。

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

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

一旦我将名称空间更新为不同的(每个项目一个名称空间) ,一切工作!

你最近有没有添加任何 DLL 依赖? ... 像我一样

我只是遇到了同样的问题,在测试输出窗口或其他实用的地方没有得到任何线索,这是非常令人恼火的。

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

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

非常奇怪的行为。

刚刚在 app.config 的底部添加了一个新的 appset 条目,这解决了我的问题。

<appSettings>
<add key="xxxxxx" value="xxxxx" />
</appSettings>

希望这对谁有帮助

我在 VS2013和 Resharper9中也有同样的错误。问题在于我忘了用[ Test ] :)注释测试方法 希望这对大家有帮助

我有这个问题,结果是一样的 这个问题.这个答案为我解决了问题

  1. 取消选中“仅生成启动项目和运行时的依赖项”(选项-> 项目和解决方案-> 生成和运行)
  2. 在 ConfigurationManager 中,确保启动项目和测试项目都选中了“ Build”。

我第二次碰到这个问题时,原因是测试所在的项目的文件路径中有一个与号。它在 ReSharper 的测试运行程序上运行良好,但在 dotCover 的测试运行程序上就不行了。从文件路径中删除与号。

这是一个带点封面的 确认窃听器

我使用的是 VS2013,ReSharper 9.1和来自 ReSharper 和 Moq 的 MSpec 扩展。

原来我在 Moq 上的 Mock 并没有被初始化,只是被声明了。初始化所有测试后再次运行。

我也有同样的问题。罪魁祸首是外部引用与我的项目生成设置不兼容。为了解决这个问题,我右键单击 project-> properties-> build-> Platform Target-> change from Any CPU To x86。

特别的 * 。和我一起工作的是 System。Data.SQLite.那个特别的 * 。Dll 是硬编码的32位操作。“任意 CPU”设置试图将其加载为64位。

在我的例子中,我得到这个错误是因为“发布”模式,其中 UnitTest 项目的构建被简单地关闭了。切换回“调试”模式修复了它。

令人惊讶的是,ReSharper 不能说任何东西,以防它根本找不到 UnitTest 库。说真的,这太可惜了;)

希望能帮到别人

我遇到了完全相同的问题,在我的测试项目中没有运行任何测试。碰巧我在运行测试时选择了错误的配置。将其改回 Debug 修复了这些问题。

Debug configuration

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

在我的例子中,[Test]方法只是 private

对我来说,这相当令人沮丧,但我至少找到了解决我问题的办法:

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

希望对某人有所帮助:)

在我的例子中,我引用了 unittestproject 中的2个项目。两个引用的项目都使用了名称相同但版本不同的 dll。

我在 VisualStudio 中没有注意到这一点,而是注意到了 Eventview 中的错误。

为了解决这个问题,我在 unittestproject 的 app.config 中使用了 绑定重定向来修复 dll-version。

我的解决办法是:

NUnit 3.2.0在 Resharper 上有一些问题——评级下调至2.6.4:

update-package nunit -version 2.6.4

在我的例子中,我的测试方法是私有的,我将它更改为公共的,它工作了。

由于缺少(未损坏) App.Config 文件。添加 New (Add-> New Item...-> Application Configuration File)修复了它。

在我的案例中,我发现 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 }
};

这里每个对象数组有两个条目,应该是3,因为 DivideTest 方法有3个参数。

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

这个问题始于我升级到.NET Core 1.1.0

通过向测试项目的 project.json 添加以下依赖项解决了这个问题:

"Microsoft.DotNet.InternalAbstractions": "1.0.500-preview2-1-003177"

在一些代码更改之后,我的类的所有测试都变得不确定(它们以前是通过的)。

看来我在测试类中添加了一个新字段:

private readonly Foo _foo = CreateFoo();

问题是在‘ CreateFoo ()’中抛出了一个异常,所以所有的测试都会发生这种情况,而且它们都没有失败,而是变得不确定。

在我的例子中,这是由于在 TestCase 中传入了 r n 字符。不知道为什么它会导致间歇性的问题,因为它大部分时间是有效的。但是如果我移除了 r 值,测试就不会是不确定的:

[TestCase("test\r\n1,2\r\n3,4", 1, 2)]
public void My_Test(string message, double latitude, double longitude)

在我的例子中,解决方案中的某些测试项目中的 所有测试在我添加新项目后没有开始运行。在 ReSharper2017.1.2中使用 VS2017。

首先,确保你没有浪费时间假设你的问题是 ReSharper 相关的。如果您使用 ReSharper 的单元测试特性(包括 单元测试资源管理器) ,很容易认为它有问题。在 测试菜单下打开 VisualStudio 的 测试资源管理器并尝试 全速前进”。这样做的另一个好处是,输出窗口将显示一条错误消息,可能会将您指向正确的方向。如果您注意到没有运行同一组测试,那么可以安全地假设问题出在 VisualStudio 而不是 ReSharper 上。

我最终删除并重新添加 主动解决方案平台中的一个,任何中央处理器,在 配置管理器中。通过这样做,在保存更改并重新打开解决方案之后,所有测试再次开始运行。

我认为在添加新项目时,解决方案文件中出现了一个意想不到的配置条目,通过重新创建一个平台,解决方案文件自我纠正了错误。我试图不同,但很难说是什么变化导致了这个问题。

在我的例子中,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.<---

结果是,在 Configuration Manager 中,给出这个错误的测试项目根本没有设置为构建。选中复选框以生成2个测试项目,并为我重新排序。

enter image description here

在我的案例中(Visual Studio Community 2017 version 15.2) ,问题的根源是 VS 2017中引入的新的项目加载方式,即“轻量级解决方案加载”。

在“单元测试会话”窗口中,我注意到解决方案的测试比应该的少得多。我必须在“解决方案资源管理器”中手动打开每个单元测试项目,只有这样所有的测试才能加载并通过。

解决这个问题的一种方法是通过右键单击“解决方案资源管理器”中的解决方案并设置“禁用轻量级解决方案负载”来禁用“轻量级解决方案负载”。

对于那些谁正在经历这个问题,我的测试项目 .NET Core 2.0Visual 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}

当我这么做的时候,测试开始起作用了。

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

为了识别我用 这个命令启动 VisualStudio 时出现的错误:

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

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

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

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

我用 ReSharper Build 修复了这个问题。

ReSharper => Options => Tools => Build => General => Use ReSharper Build

对于那些急于执行测试的人,我不得不使用 VS2017测试浏览器来运行测试;

enter image description here

enter image description here

我在使用 NUnit 框架运行任何测试时遇到了同样的问题 Visual Studio 201715.5.6

ReSharper Ultimate 2017.3.3 Build 111.0.20180302.65130

向 Microsoft.NET.Test.Sdk 添加项目依赖项

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

Install-Package NUnit3TestAdapter

我在2017年版本3和 Resharper Ultimate 2017.2中遇到了这个问题

重新启动或重新启动机器不能帮助。

我通过清除 Cache 来解决这个问题,方法如下:

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

更新:

在测试窗口的右上角有一个按钮“ error”(我在 Resharper2018中发现)。

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

若要跟踪问题的根源,请在日志模式下运行 VisualStudio:

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

测试一下。

检查日志文件 test _ log.txt 并在文件中搜索“ error”。

日志文件对于查找可以解决的错误非常有帮助,或者您可以将日志文件中的问题发送到 Resharper 技术支持小组

enter image description here

enter image description here

有时候,只要尝试删除头文件(. h)并将其重新添加为源文件(. cpp) 没有重命名即可。 在 reSharp c + + & & vs2019中测试,测试代码是 < a href = “ https://developer.ibm.com/article/au-googletestingFramework/# list13”rel = “ nofollow noReferrer”> 这里

此错误发生在 Visual Studio 2017和 resharper version 2018.2.3上,但是该修复应用于 Visual Studio 2019版本。

为了让测试在 Resharper 运行,在撰写本文时,修复只是更新到 Resharper 的最新版本(2019.2.1)。

对我来说,问题是一个异步调用,它没有以任何方式等待。

   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

这个测试又开始适用了。

在我的例子中,我的应用程序配置文件 app.config 中有一个错误。我错误地将应用程序设置放在配置部分的上方,而没有将其放在内部。因此,一个损坏的配置文件可能是导致 Resharper 没有运行您的测试响应不确定的原因。

在这个问题上,我有一个测试类的所有测试都失败了,其他所有测试都运行良好。后来,我在这个类的一个测试中发现了一个错误,它是一个[忽略]属性。

对于那些仍然不能解决他们的问题,检查 Consolidate选项卡时,管理您的 Nuget 包。

原来我们的单元测试项目引用了一个不同的版本,导致了这个完全模糊的错误。

解决这个问题的另一种方法是:

在另一个环境中运行测试(例如 TeamCity)并查看您的真实问题。我的问题是不正确的绑定重定向到 System。韦伯。Mvc 5.2.6.0(未安装在我的机器上)。

我的问题已经用最肤浅的方法解决了:

将 Moq nuget 包添加到测试项目 解决不确定的测试方法,然后您可以删除这个 nuget 包。

添加了 Moq 包之后,我的测试方法使用以下 nuget 包运行: Castle。Core (4.4.0)、 Moq (4.13.1)、 NUnit (3.12.0)、 System。运行时间。编译服务。不安全(4.5.0)及系统。穿线。任务。扩展(4.5.1)

在删除了上面的大部分 nuget 包之后,我的测试方法仍然只能在 NUnit (3.12.0)中运行。

如果有人知道为什么会这样,我会很感激的。

我知道这个问题有/几个/答案,但我还有另一个独特的答案,我没有看到作为一种方式来解决它。我希望这能帮到其他人。

要使用单元测试会话,一个外部依赖项是 Microsoft。网。测试。Sdk,在 VS 管道的某个位置,xunit.runner.visalStudio 停止了正常工作,以适应 ReSharper Unit Test Session 风格的测试运行程序。下面是我如何结束这个问题,以及我如何解决它。

我的问题和答案来自于在将我的一些 net451库转换成 netStandard 2.0以允许我的团队在 Core 或 Framework 中开发时看到的不确定性。当我进入新完成的 netStandard2.0库并开始将它们的旧单元测试项目转换为新的解决方案时,我遇到了一些问题。您不能在 net Standard 项目中运行单元测试,因此对于我的单元测试项目,我选择向下移动到 net472。

在这一点上,我会注意到,。Csproj 文件从那以后发生了变化。网络架构。为了清楚地集成 nupkg 文件和。Net 标准库中,您需要更改要用 PackageReference 而不是 packages.config 处理的引用。

我有几个与 Windows 相连的库不能转换成 netStandard,所以当更新它们的依赖关系以使用新的 netStandard 库时,我意识到如果它们的。Csproj 文件是旧格式的。为了解决这个问题,不仅需要将它们从 packages.config 转换为 PackageReference,我还必须手动更新。Csproj 文件转换为更新的 VS2017格式。这使得这些库可以像引用 netStandard2.0依赖项的 net472库一样干净地构建到 nuget 包中。

有一个工具可以为您转换包组织行为,它保留了旧的。样式,并在。Csproj.由于上述原因,我养成了迁移。Csproj 样式手动转换为 VS2017格式。

所以总的来说,当我为我的依赖项和单元测试项目使用 PackageReference 时,我收到了非决定性的结果。Csproj 文件是 VS2017样式的。

我可以通过删除我的项目来解决这个问题,重新创建它就像它在 net472中一样,而不是将它转换成 VS2017。Csproj 格式,我留在旧的格式。

不管出于什么原因,旧格式允许我的测试会话完成。

我对一些事情很好奇:

  1. 如果很多有这个问题的人在 netCore 版本中遇到这个问题。Csproj 文件默认采用新格式。
  2. 如果人们能够通过其他方式解决这个问题,而不是通过我可重现的问题/修复程序。Csproj 和使用 netCore 作为他们的测试项目。
  3. 如果这个解决方案可以帮助那些无法通过重新构建或删除 vs/bin 文件夹或其他条目来修复它的人。Csproj 文件。

我不知道这个答案是否是 ReSharper 需要为每个人修复它的唯一真正的解决方案,但是它对我来说是可复制的,并且解决了我的问题,让单元测试项目成为。Csproj 文件,至少当我有一个引用 netStandard2.0库的 net472单元测试项目时。

还应该指出的是,VS2017。Csproj 文件不赞成在 Properties 文件夹中使用 AssemblyInfo.cs 文件,我不确定这是否也会给 Unit Test Sessions 带来问题。

希望对其他人有所帮助,我的补丁是更新软件包,有一个合并,使所有的工作与同一个软件包为我解决了这个问题。GL!

在解决方案中的项目之间,我的 nuget 依赖关系中有一个版本不匹配。在 VisualStudio 中使用合并特性有助于识别和修复此问题。

啊。

首先是一个调试技巧。

我跑了

网络测试

从命令行。

这告诉我:

我的测试没有正确的签名。标记有[ TestMethod ]属性的测试方法必须是非静态的、公共的、返回类型为 void 的,并且不应该接受任何参数。示例: public void Test。类别1.Test ()。此外,如果您在测试方法中使用的是异步等待,那么返回类型必须是 Task。示例: 公共异步任务测试。Class1.Test2()

当我去看的时候。

[TestMethod]
private void MyFirstTest()
{
}

啊。

我把它私下和公开对比了一下。

我的解决办法是:

[TestMethod]
public void MyFirstTest()
{
}

经验教训。检查的基础知识。但“网络测试”告诉我的基本知识。

在我的例子中,只是缺少.NET 5运行时。安装一个后,问题就解决了。

在我的例子中,我使用了 Rider 和 MSTest,并通过以下命令解决了这个问题

测试 > 单元测试设定

并将 默认平台架构自动的改为 X86