Skip to main content
 首页 » 编程设计

unit-testing之单元测试有时会失败,有时会通过

2024年05月29日100yyy_WW

我有一个 Mocha 单元测试套件。

当我在本地运行它们时,一切正常。当我在 Jenkins CI 服务器上运行它们时,它们有时会失败,有时会通过。

我只是无法重现他们失败的原因。什么可能导致此行为?

请您参考如下方法:

测试可能会因多种原因间歇性失败,确定失败的原因通常可以揭示您的代码库和环境。

以下是一些可能的原因:

• 共享对象 - 如果测试环境未重置为众所周知的状态,则保存状态的单例可能会导致测试之间出现问题。 如果您的测试运行程序以不确定的顺序执行测试,您可能会看到随机错误,这些错误实际上暴露了损坏的状态问题

• 环境和外部依赖性 - 任何可以保存状态的外部对象都可能导致不可预测的结果

• 计时 - 有时测试是用过于具体的超时或线程 sleep 来编写的。如果构建服务器在重负载下运行,这些超时可能不够长

作为一般指导,测试必须:

  • 隔离:测试一次只关注一个单元
  • 可重复:每次产生相同的结果
  • 独立:测试的执行顺序无关紧要