单元/集成测试,它们应该是多么精细?

时间:2008-12-16 21:28:32

标签: asp.net unit-testing integration-testing

我正在使用NUnit / Watin测试我的ASP.Net Web Forms应用程序的UI。我理解围绕TDD,单元测试,集成测试等的高级概念,但直到现在还没有太多机会将它们使用。

因此,当我在数据输入表单上测试验证逻辑时,我应该编写一个触发每个验证错误的测试(即需要字段x),或者对每个验证错误进行单独测试应该由表单抛出。这只是一个样式问题,还是有正当理由来编写几个测试而不是一个能够验证我验证逻辑的所有可能组合的测试?

Psuedo代码:

    [Test]
    public void Validation()
    {
       //Do some stuff to test that username is required.
       Assert.AreEqual(true, ie.ContainsText("Username is required.");

       //Do some stuff to test that passwword is required.
       Assert.AreEqual(true, ie.ContainsText("Password is required.");
    }

VS

[Test]
public void ValidateUserName()
{
   //Do some stuff to test that username is required.
   Assert.AreEqual(true, ie.ContainsText("Username is required.");
}

[Test]
public void ValidatePassword()
{
   //Do some stuff to test that passwword is required.
   Assert.AreEqual(true, ie.ContainsText("Password is required.");
}

1 个答案:

答案 0 :(得分:7)

我倾向于每次验证一次测试:

  • 如果您完全破坏验证,则两次测试都会失败,因此您可以立即了解所有已损坏的内容。如果他们处于相同的测试中,那么第一次失败将掩盖第二次失败,直到第一次失败为止。

  • 一旦你破坏了任何东西,你就会得到一个关于失败方法名称中究竟是什么的描述。许多单元测试GUI会在每次失败的测试旁边为您提供一些红色交通灯,这些将自然地突出显示并描述您的所有错误。

话虽如此,重要的是你要测试 - 特定测试出现在课堂上的是一个小细节...