仅使用断言语句进行单元测试是否有效?

Jes*_*och 6 c# tdd unit-testing

所以,我是单元测试的新手,更重要的是测试第一次开发.在我的单元测试中只有一个assert.isTrue语句,我传入我的方法和有效参数,并将其与已知的良好答案进行比较,这对我有效吗?

方法

public static string RemoveDash(string myNumber)
    {
        string cleanNumber = myNumber.Replace("-","");
        return cleanNumber;
    }
Run Code Online (Sandbox Code Playgroud)

测试

[TestMethod()]
    public void TestRemoveDash()
    {
        Assert.IsTrue(RemoveDash("50-00-0")=="50000");
    }
Run Code Online (Sandbox Code Playgroud)

AHu*_*ist 10

如果它测试你的方法的功能,这是非常有效的,它似乎正在做.

可能会考虑在这里使用Equals,但这并不重要.此外,我知道这是一个测试示例,但始终要确保测试输入不是预期的情况以及它可以进入的任何其他有效形式(这可以是相同的测试方法或不同的取决于根据您的喜好)


fle*_*her 10

测试人员有时会阅读我们的测试,因此我尝试将它们尽可能地重新读取.我更愿意使用以下内容,而不是单个Assert:

[TestMethod()]
public void TestRemoveDash()
{
    string expected = "50000";
    string actual = RemoveDash("50-00-0");
    Assert.AreEqual(expected,actual);
}
Run Code Online (Sandbox Code Playgroud)


Igo*_*aka 6

唯一的评论是使用Assert.AreEqual而不是Assert.IsTrue:

Assert.IsAreEqual("50000", RemoveDash("50-00-0"));
Run Code Online (Sandbox Code Playgroud)

原因在于,如果测试失败,您获得的错误消息将更具描述性意义,以及实际发生的情况.显示"预期值<50000>但实际上<50-00-0>"的消息要好于"预期值为真,但却是假的".

作为一个经验法则,当你发现自己想要使用的Assert.IsTrue,经过Assert的方法,看看是否有更好的方法来测试你的期望(例如Assert.IsInstanceOfType,Assert.IsNotNull等).