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

Jas*_*onS 4 asp.net integration-testing unit-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.");
    }
Run Code Online (Sandbox Code Playgroud)

[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.");
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*ton 7

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

  • 如果你完全破坏了验证,那么两个测试都会失败,所以你立刻就会知道你已经破坏的一切.如果它们处于相同的测试中,则第一次失败将掩盖第二次失败,直到第一次失败为止.

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

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