繁体   English   中英

即使测试失败,C#测试也始终返回true

[英]C# test always return true even when test fails

在运行测试之前,我已经将代码设置为如下所示:

private bool ValidateTestOne(EntityModel.MultiIndexEntities context)
{
    if (context.SearchDisplayViews.Count() != expectedSdvCount)
    {
        Assert.Fail("Search Display View count was different from what was expected");
    }

    if (sdv.VirtualID != expectedSdVirtualId)
    {
        Assert.Fail("Search Display View virtual id was different from what was expected");
    }

    if (sdv.EntityType != expectedSdvEntityType)
    {
        Assert.Fail("Search Display View entity type was different from what was expected");
    }

    return true;
}

这还将返回正确的路径,告诉我测试是通过还是失败。 从那以后,在征求了一些建议之后,我更改了代码,使其如下所示:

private bool ValidateTestOne(EntityModel.MultiIndexEntites  context)
{
    Assert.AreEqual(expectedEntityCount, context.Entities.Count(),
        "Entity Count was different from what was expected");

    return true;
}

我对使用新的Assert.AreEqual想法是,它仍然会返回true或false,这取决于它是通过还是失败。 但是现在我的测试总是返回true,因为如果测试失败或失败,我将无法解决。

所有这些都是通过在我的主要测试方法中调用以下行来确定的:

Assert.IsTrue(test4PassFail = ValidateTest("4.4"), "Test 4 ");

有没有办法我可以修改新代码以返回true或false,而不必还原到旧代码?

而不是return true; ,则可以执行Assert.AreEqual(expectedEntityCount, context.Entities.Count()");

这将是您的失败/通过。 您不需要退货。 但实际上,您一直在返回true

[TestClass]
public class Tests
{
     [TestMethod]
     private void ValidateTestOne(EntityModel.MultiIndexEntites  context)
     {
          Assert.AreEqual(expectedEntityCount, context.Entities.Count(), "Entity Count was different from what was expected");
     }
}

您需要遵循MSTest进行测试的方法。 您的类需要具有[TestClass]属性,而您的方法则需要[TestMethod]。 测试类中的方法都是无效的。 无论断言如何,您的方法都将返回true。 VS允许您添加测试项目和测试类以支持您的代码。 它将为您添加适当的属性。

[TestClass]
public class Tests
{
   [TestMethod]
   public void DriveInfoTest()
   {
       // set up
       DriveUnit uut = new DriveUnit();

       // run
       var result = uut.GetInfo();


      // verify
      Assert.IsNotNull(result, "Get Info did not return an object.");
   }

}

在第一个中,您总是返回true,因为这就是您将其设置为返回的内容。

您应该考虑将它们嵌套在if语句中

private bool ValidateTestOne(EntityModel.MultiIndexEntities context)
  {
     if (context.SearchDisplayViews.Count() != expectedSdvCount)
        {
              Assert.Fail(" Search Display View count was different from what was expected");
//does it return true or false?
//return true or false

        } else if (sdv.VirtualID != expectedSdVirtualId){

             Assert.Fail(" Search Display View virtual id was different from what was expected");

//again true or false?

        } else if(sdv.EntityType != expectedSdvEntityType) {
           Assert.Fail(" Search Display View entity type was different from what was expected");
//true or false?

        }

  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM