代码之家  ›  专栏  ›  技术社区  ›  Chen Kinnrot

跳过需要很长时间的单元测试

  •  6
  • Chen Kinnrot  · 技术社区  · 15 年前

    我正在为我的单元测试写作与MS-Test一起工作。 我的大多数测试持续时间都小于0.1秒。

    我知道在nunit中有一个“explicit”属性,只有在显式地选择它时才会运行测试。我想这可能有帮助,但不确定。

    请帮忙

    4 回复  |  直到 15 年前
        1
  •  2
  •   bguiz    15 年前

    用语言不可知论、框架不可知论的方式来思考这个问题,你所要求的是一个难题:

    在运行任何单元测试之前,测试工具都不知道它们的执行时间;因为这不仅取决于测试工具和测试本身,还取决于被测试的应用程序。解决这个问题的权宜之计是做一些事情,比如设定一个时间限制。如果你这样做了,那么这就引出了一个问题,当一个测试超时时,它是应该通过,还是失败,或者可能属于其他(第三)类?... 难题!

    因此,为了避免这种情况,我建议您应该采用一种不同的策略,即您作为开发人员决定希望在不同的情况下运行整个测试集的哪些子集。例如:

    • 测验;
      • i、 你想一直先运行的测试。如果其中任何一个失败,那么您不想麻烦执行任何测试。只放真正的 此组中的测试。
    • 最小值
      • 对于您的特定需求,这将是一组测试,其中包含 “快”或“快”
    • 一个 综合的 一套测试;
      • “慢”或“长”

    在运行测试时,您可以选择要运行的这些测试子集中的哪一个,也许可以用某种脚本形式配置它。

    我在自动化测试(集成到一个持续集成系统中)中使用这种方法取得了很大的效果。为此,我使用了一个脚本,该脚本根据输入参数决定只执行 测试加上 最小值 测试;或者 测试,测试 最小值 测试和 测试(即所有测试)。

    高温高压

        2
  •  0
  •   Igal Tabachnik    15 年前

    Timeout 属性,并以毫秒为单位指定超时。如果超时通过,则测试失败。

        3
  •  0
  •   Iain    15 年前

    <TestMethod(), Timeout(1000)>
        Public Sub OutputWebservice_SubmitOutputJob_SubmitEmailJobHF001()
        End Sub
    
        4
  •  0
  •   RJFalconer    15 年前

    您应该设置测试,以便它们在提交之后在服务器上运行,然后通知开发人员(可能是通过电子邮件?)任何失败。

    推荐文章