哈德森进行了一些测试而不是其他测试

时间:2011-08-04 23:21:50

标签: unit-testing hudson surefire

我有一个包含JUnit测试的Maven管理的Java项目 - 没什么不寻常的。最近,我开始在我的机器上破坏构建,但哈德森仍然很高兴。我意识到我做了一个改变,打破了单元测试,但注意到Hudson没有运行单元测试。我的大多数测试运行良好,但我的一个软件包中的所有内容都完全没有。未列为“已跳过”,但实际上缺少

现在,我没有设置这个Hudson实例,我不是一个大师,所以我不知道从哪里开始。没有特别的顺序:

  • 我查看了项目设置页面,并复制了正在使用的Maven命令行并在本地运行它。在POM中有一些特定于Hudson的配置文件设置,所以我认为值得一试。缺少测试仍然运行(并且失败)。
  • 我试着查看旧的处决,看看它是否是最近的改变。不幸的是,我们只保留了5个旧版本,所以死路一条。
  • 我仔细检查了POM,看看是否有任何东西可能导致它排除测试 - 不是Maven 天才但我可以非常自信地说应该没有任何东西,无论如何它应该没有因为子弹#1而无关紧要
  • 我下载了Hudson工作区。有趣的是,test-classes下有一个/target目录,其中包含所有缺失测试的.class个文件,但/target/surefire-reports没有匹配的输出文件

我觉得我必须缺少某种设置某处,或者至少某种日志文件会指示这是怎么回事 - 也许测试失败所以


更新:在本地安装Jenkins并尝试重现。我正在失去理智:它仍然无法运行相当多的测试,即使我自己登录,转到Jenkins工作区,并构建

  • 在我自己的帐户下
  • 使用我自己的本地m2 repo(来自网络驱动器)
  • 使用相同的Maven / Java二进制文件(来自网络驱动器)
  • 运行相同的操作系统

据我所知,这两台机器的来源是相同的,我的环境应该是相同的(同一帐户)......我想不出任何差异,当然除了很多测试都没有不要在Jenkins盒子上跑。

2 个答案:

答案 0 :(得分:2)

我刚才遇到了这个问题,我愿意打赌你的一些测试并没有遵循标准的命名惯例; * Test.java。默认情况下,Surefire只会选择符合某种命名惯例的测试; http://maven.apache.org/plugins/maven-surefire-plugin/examples/inclusion-exclusion.html

答案 1 :(得分:0)

我几乎肯定this is not Hudson's fault,甚至严格Maven的错。我认为这是一个JUnit错误,我会在另一个问题中追逐它。