首页 > 解决方案 > 这个单元测试在练习时如何通过?

问题描述

我已经创建了两个不相等的变量,我if为该方法创建了一个语句,并且在 Visual Studio 上它仍然通过,我让它失败的唯一方法是如果我if完全删除该语句然后使用

Assert.IsTrue(a == b); 

但是,如果我尝试通过if语句使用它,它会由于某种原因通过

[TestClass]
public class SectionQuiz
{
   static int a;         
    static int  b;              

    [ClassInitialize]
    public static void IntegerInitalize(TestContext testContext)
    {
        a = 10;  // set variables and a != b
        b = 5;
    }

    [TestMethod]
    public void Number1_isnotequalto_number2()
    {
        if (a == b)
        {
            Assert.IsTrue(a==b);
        }
    }
}

标签: c#unit-testing

解决方案


if 语句与它是否通过无关。单元测试Number1_isnotequalto_number2没有断言任何东西,所以它总是会通过。

将此行添加到单元测试Number1_isnotequalto_number2的末尾和 if 语句之外。

Assert.AreEqual(a, b);

通过添加这一行,考虑到您的初始化,单元测试应该总是失败。

另一种选择- 如果您想将 if 语句与断言结合起来,但通常不会像这样......

if (a != b)
  Assert.Fail("they are not equal");
// else
// There is no Assert.Pass - just return and it passes

推荐阅读