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

C#即使测试失败,测试也始终返回true,c#,tdd,automated-tests,C#,Tdd,Automated Tests,在运行测试之前,我将代码设置为如下所示: private bool validatestone(EntityModel.MultiIndexEntity上下文) { if(context.SearchDisplayViews.Count()!=expectedSdvCount) { Assert.Fail(“搜索显示视图计数与预期不同”); } if(sdv.VirtualID!=expectedSdVirtualId) { Assert.Fail(“搜索显示视图虚拟id与预期不同”); } i

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

private bool validatestone(EntityModel.MultiIndexEntity上下文)
{
if(context.SearchDisplayViews.Count()!=expectedSdvCount)
{
Assert.Fail(“搜索显示视图计数与预期不同”);
}
if(sdv.VirtualID!=expectedSdVirtualId)
{
Assert.Fail(“搜索显示视图虚拟id与预期不同”);
}
if(sdv.EntityType!=预期的sdv通风类型)
{
Assert.Fail(“搜索显示视图实体类型与预期不同”);
}
返回true;
}
这还会返回正确的路径,告诉我测试是通过还是失败。从那时起,经过一些建议,我更改了代码,使其看起来如下所示:

private bool validateStone(EntityModel.MultiIndexEntites上下文)
{
Assert.AreEqual(expectedEntityCount,context.Entities.Count(),
“实体数量与预期不同”);
返回true;
}
我对使用新的
Assert.AreEqual
的想法是,它仍然会返回true或false,这取决于它是通过还是失败。但现在我的测试总是返回true,因为我无法判断我的测试是否失败

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

Assert.IsTrue(test4PassFail=ValidateTest(“4.4”),“test4”);

有没有一种方法可以让我的新代码返回true或false,而不必返回到旧代码?

而不是执行
返回true,您可以执行
断言.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");
     }
}

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

这将是你的失败/通过。你不需要做回报。但实际上,您一直在返回
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.");
   }

}

您需要按照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,因为这就是你设置它返回的值

如果其他语句

则应考虑将它们嵌套。
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?

        }

  }

在第一个例子中,你总是返回true,因为这就是你设置它返回的值

如果其他语句

则应考虑将它们嵌套。
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?

        }

  }

您使用的是测试框架,还是您自己的内部套件?我使用的是visual studio提供的任何东西。为什么您的测试方法有返回值?您使用的是测试框架,或者你自己的内部套件?我正在使用你在visual studio中得到的任何东西。为什么你的测试方法有返回值?我刚刚尝试过,但我的测试仍然通过,即使它在输出窗口中有我的错误消息。愚蠢的问题,但是你删除了
return
语句了吗?是的,注释掉了。方法现在为您添加了一个代码示例。它看起来应该与此类似。我刚刚尝试过,但我的测试仍然通过,即使输出窗口中有我的错误消息。愚蠢的问题,但是你删除了
return
语句了吗?是的,注释掉了。方法现在为您添加了一个代码示例。它应该看起来像这样。