【问题标题】:Unit/Integration Tests, how granular should they be?单元/集成测试,它们应该有多细?
【发布时间】:2008-12-16 21:28:31
【问题描述】:

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

所以,当我在数据输入表单上测试验证逻辑时,我应该编写一个测试来触发我的每个验证错误(即字段 x 是必需的),还是为每个验证错误编写单独的测试应该由表单抛出。这仅仅是一个样式问题,还是有正当理由编写多个测试而不是一个针对我的验证逻辑的所有可能组合的测试?

伪代码:

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

对比

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

【问题讨论】:

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


    【解决方案1】:

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

    • 如果您完全破坏了验证,则有两个测试会失败,因此您会立即了解您破坏的所有内容。如果他们在同一个测试中,那么第一个失败将掩盖第二个,直到第一个被修复。

    • 一旦你破坏了任何东西,你就会在失败的方法的名称中得到关于破坏了什么的确切描述。许多单元测试 GUI 会在每个失败的测试旁边为您提供一个小红灯,它们自然会突出显示并描述您的所有错误。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      • 2020-03-19
      • 2012-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多