2016-04-24 65 views
3

在我的构建服务中,两个测试失败,在本地运行时不会失败。单元测试在构建服务中失败,但不在本地

我发现的是,当我在本地执行mvn clean test时,我的测试类的排序顺序是按字母顺序排列的(包和类),但是在构建服务中运行时,它们看起来是随机的。

这不是我的意图,需要一个特定的“订单”,所以我绝对担心一个测试先于另一个暗示隔离问题。但是,我不认为我可以告诉Maven以特定顺序运行课程。

我能做些什么来尝试重现?

编辑

我克隆我的构建计划,但在分叉回购(相同的代码)指出,它没有失败的测试运行成功...

+0

我不认为这是最好的方法,但如果你说构建服务的顺序是随机的,你可以在你的机器上设置'runOrder'来随机,并希望遇到同样的问题。 –

+1

测试不应该依靠订单。每个测试都必须单独运行,并使用'@ After'方法清理资源。但无论如何,你能提供代码和例外为什么测试失败吗? –

+0

@SergheyBishyr我完全同意,但他们失败,因为他们不干净地运行命令,绝对看起来像是一个更快的方式来揭示为什么。 –

回答

5

你应该尝试随机执行mvn -Dsurefire.runOrder=random clean test在本地订购。

但即使您的构建在本地失败,随机顺序也不是因测试顺序而重现失败的最佳选择。如果按字母顺序排列运行时的测试都是绿色的,你也许可以让你的构建始终失败,mvn -Dsurefire.runOrder=reversealphabetical clean test

也有一对夫妇更多的选择 - 看runOrder documentation

相关问题