单元测试在构建服务中失败,但不是在本地
Posted
技术标签:
【中文标题】单元测试在构建服务中失败,但不是在本地【英文标题】:Unit Tests Fails in Build Service But Not Locally 【发布时间】:2016-04-24 13:21:04 【问题描述】:我的构建服务中的两个测试在本地运行时不会失败。
我发现,当我在本地执行 mvn clean test
时,我的测试类的排序顺序是按字母顺序排列的(包和类),但在构建服务中运行时,它们似乎是随机的。
我并不打算需要特定的“命令”,所以我绝对担心一个测试先于另一个测试暗示了一个隔离问题。但是,我认为我不能只告诉 maven 以某种顺序运行类。
我可以做些什么来尝试复制?
编辑
我克隆了我的构建计划,但指向了一个分叉的 repo(相同的代码),它成功运行,没有失败的测试...
【问题讨论】:
我认为这不是最好的方法,但是如果您说构建服务的顺序是随机的,您可以在您的机器上将runOrder
设置为随机并希望遇到相同的情况问题。
测试不应该依赖于顺序。每个测试必须单独运行并在@After
方法中清理资源。但是无论如何,您能否提供测试失败的代码和异常?
@SergheyBishyr 我完全同意,但他们失败了,因为他们运行不干净,订单似乎是揭示原因的更快方法。
【参考方案1】:
您应该尝试在本地执行mvn -Dsurefire.runOrder=random clean test
进行随机排序。
但即使您的构建在本地失败,由于测试顺序,随机顺序也不是重现失败的最佳选择。如果测试在按字母顺序运行时都是绿色的,您可能会使用mvn -Dsurefire.runOrder=reversealphabetical clean test
使您的构建始终失败
还有更多选择——请参阅runOrder documentation
【讨论】:
以上是关于单元测试在构建服务中失败,但不是在本地的主要内容,如果未能解决你的问题,请参考以下文章