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
语句了吗?是的,注释掉了。方法现在为您添加了一个代码示例。它应该看起来像这样。