为什么我的NUnit测试不会失败?

克莱·香农(B. Clay Shannon)

我有这样的NUnit测试代码:

[Test]
public void TestHHSInterface()
{
    var HHSClient = IOC.container.Resolve<IHHSClient>();

    var s = HHSClient.GetTestMessage("Rupert", "Pupkin");

    Assert.Greater(s.Value.Length, 0);
}

[Test]
public void TestHHSDeliveryInterface()
{
    var Delivery = IOC.container.Resolve<IHHSDelivery>();

    var i = Delivery.GetCount();

    Assert.Greater(i, 42); // was 17; returns 18
}

[Test]
public void TestHHSDeliveryItemInterface()
{
    var Delivery = IOC.container.Resolve<IHHSDeliveryItem>();

    var i = Delivery.GetCount();

    Assert.Greater(i, 42); // was 19; returns 36
}

TestHHSDeliveryInterface()测试(IHHSDelivery)返回18,因此断言它大于42应该使它失败。类似地,TestHHSDeliveryItemInterface()返回36,因此其断言也应该失败。但是他们都“通过”:

在此处输入图片说明

另外,我不明白为什么\ Integration Test \ HHSClientIntegration Tests下只有两个测试,而如上面的代码所示,却只有三个。

更新

Pierre-Luc Pineault:您可能是对的,但即使我改掉它:

Assert.Greater(42, i);

...它仍然通过。

更新2

我不确定要遵循CodeCaster的建议“检查您是否正在测试包含所编写的代码的程序集(调试/发布,其他目录),特别是鉴于您看到的测试最少的评论,我到底需要检查什么”在运行程序中比在代码中要多。

以下是一些可能值得注意的事情;让我知道我想念/想要的东西。

Test项目的Build属性页面显示:

Configuration: Active (Debug)
Output path: bin\Debug

App.config包含以下行:

<compilation debug="true" targetFramework="4.5" />

HHS.Web.Tests.nunit包含:

<NUnitProject>
  <Settings activeconfig="Default" />
  <Config name="Default" binpathtype="Auto">
    <assembly path="bin\Debug\HHS.Web.Tests.dll" />
  </Config>
</NUnitProject>

(这是HHS.Web.Tests.nunit的全部内容)

更新3

为了回应下面的一些评论(CodeCaster,OnABauer),我不知道这是否有帮助,但是该解决方案有50个项目(我只在其中几个项目);在“我的世界”中,启动项目是三个库/ DLL,特别是HHS.API,HHS.Web和HHS.Web.Tests设置为“开始”;所有其他都设置为“无”

HHS.Web.Tests的“调试”页面的“启动外部程序:”设置为“ C:\ Program Files(x86)\ NUnit 2.6.3 \ bin \ nunit.exe”,“命令行参数:”设置为“ C :\ project \ sscs \ CStore \ Development \ Development \ HHS.Web.Tests \ HHS.Web.Tests.nunit”

更新4

CodeCaster建议:“将测试运行器的完整路径与您的输出路径进行比较”

如何确定两者(“来自测试运行器的完整路径”和“ [我的]输出路径”)?上面的路径(C:\ project \ sscs \ CStore \ Development \ Development \ HHS.Web.Tests \ HHS.Web.Tests.nunit)是测试运行程序路径吗?或者...???

更新5

从上面的尖叫声可以看出,TestHHSDeliveryInterface显示在正在运行的测试列表中(据说)。因此,人们会认为TestHHSDeliveryItemInterface也会出现在这里。毕竟,TestHHSDeliveryInterface出现在代码中的所有位置,TestHHSDeliveryItemInterface也会出现在代码中:

HHSClientIntegrationtests:

[Test]
public void TestHHSDeliveryInterface()
{
    var Delivery = IOC.container.Resolve<IHHSDelivery>();

    var i = Delivery.GetCount();

    //Assert.Greater(i, 42); // was 17; should return 18
    //Assert.Greater(42, i); <= same result (passes)
    // Seeing if it's running at all
    Assert.Fail(); // <= Test still passes, so something is very fishy here...
}

[Test]
public void TestHHSDeliveryItemInterface()
{
    var Delivery = IOC.container.Resolve<IHHSDeliveryItem>();

    var i = Delivery.GetCount();

    Assert.Greater(i, 42); // was 19; should return 36
}

HHSClientPlayTest:

[Test]
public void TestHHSDeliveryInterface()
{
    var HHSDelivInterf = IOC.container.Resolve<IHHSDelivery>();
}

[Test]
public void TestHHSDeliveryItemInterface()
{
    var HHSDelivItemInterf = IOC.container.Resolve<IHHSDeliveryItem>();
}

HHSClientUnitTest:

[Test]
public void TestHHSDeliveryInterface()
{
    var HHSDelivInterf = IOC.container.Resolve<IHHSDelivery>();
}

[Test]
public void TestHHSDeliveryItemInterface()
{
    var HHSDelivItemInterf = IOC.container.Resolve<IHHSDeliveryItem>();
}

在代码中存在IHHSDelivery的每个位置,都有一个对应的IHHSDeliveryItem代码块...

佩德罗

无需在项目的“开始”选项中指定.nunit文件,而是指定测试dll名称而不包含任何路径信息。如果每次都在重建此文件,则应保证您正在加载正确的文件。

如果在Assert上设置了一个断点,则返回值是否符合您的期望?如果不是这样,则说明您正在处理nunit-agent.exe,或者不是每次都在重新编译测试程序集。

要验证您使用的是正确的程序集,请使用Sysinternals Suite中的Process Explorer查找NUnit实际加载的dll。删除该程序集并重新编译。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我失败的Ruby单元测试不会失败?

为什么这个Jest测试不会失败?

当单元测试有解析错误时,为什么我的业力测试不会失败?

为什么启用JetBrains dotCover会导致NUnit测试失败?

为什么我的rspec测试失败?

为什么nUnit不执行我的SpecsFor.Mvc测试?

如果我未对“严格期望”提供正确的期望,为什么我的JMockit测试用例不会失败?

为什么在 RecyclerView 上 swipeRight 时测试不会失败?

为什么Spring的TestExecutionExceptionHandlerTests的ATestClass的测试不会失败?

为什么我尝试调试NUNIT测试时获得此“ NUnit.Framework.SuccessException”?

我开始使用 NUnit 进行单元测试,(不运行测试)为什么?

为什么NUnit测试适配器找不到我的FsUnit测试?

为什么VSTS Build“ Visual Studio测试”步骤找不到我的NUnit测试?

为什么添加参数后我的单元测试失败?

为什么我的guard-rspec测试失败?

为什么我的Mocha / chai错误抛出测试失败?

测试失败,我不明白为什么乐

不确定为什么我的测试总是失败

为什么我的 sinon 测试超时而不是失败?

为什么重构时我的单元测试失败

为什么我的 API 测试应该通过时却失败了

为什么我的逻辑在某些测试用例中失败了?

为什么我的模型验证失败了,为什么我的rspec测试没有通过?

为什么此测试失败?

为什么测试组件失败?

为什么期望测试失败?

烧瓶测试-为什么测试失败

NUnit运行测试失败

当所有单个测试通过时,为什么我的Bazel测试报告失败?