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

标签 c# tdd automated-tests

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

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

关于即使测试失败,C# 测试也始终返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29079977/

相关文章:

C# - 由于其保护级别而无法访问

c# - 如何使用正则表达式进行不区分大小写的字符串替换?

visual-studio-2008 - 为 Visual Studio 2008 推荐的 TDD/Agile/Source Control 插件

visual-studio - Visual Studio 2017 - 无法关闭 "Live Testing"

testing - 如何使用 Robot Framework 上传多个文件

java - 如何使用 Google UiAutomator 按下按钮两次?

c# - C# 中的自定义字符串比较

c# - 从使用 configSource 文件的 Web.Config 读取值

java - 期望任何东西作为参数来模拟使用 EasyMock

Python 网络抓取线程性能