JUnit测试在Eclipse工作台中传递,但在Ant构建中失败

时间:2012-01-17 12:26:10

标签: java eclipse ant junit

我有一个单元测试,其中包含6个测试用例(@Test - 注释方法),当我将Java文件作为JUnit Test(来自Eclipse工作台内部)运行时,它们都运行得很好。但是当我从buildcript运行 run-tests Ant目标时,它们会失败并显示以下控制台输出:

[junit] Running com.me.myproject.WidgetTest
[junit] Tests run: 6, Failures: 6, Errors: 0, Time elapsed: 1.737 sec
[junit] Test com.me.myproject.WidgetTest FAILED

以下是run-tests目标的JUnit部分:

<junit fork="yes" forkmode="once" dir="${basedir}" printsummary="yes" haltonerror="no" haltonfailure="no">
    <classpath>
        <path refid="test.class.path"/>
        <pathelement location="${mainBuildDir}"/>
        <pathelement location="${testBuildDir}"/>
    </classpath>

    <formatter type="xml"/>

    <batchtest todir="${genUnitTestReportsDir}">
        <fileset dir="${testJavaSrcDir}">
        <include name="**/*Test*.java"/>
        </fileset>
    </batchtest>
</junit>

有人听说过这件事吗?有没有办法从JUnit的ant任务中获得更多(详细)输出?调试这里发生的事情的任何好方法?提前谢谢!

2 个答案:

答案 0 :(得分:0)

如果没有看到发生异常的堆栈跟踪,我无法分辨。这可能是一个类路径问题。查看有关JUnit的Java ANT文档,它应该可以帮助您启用调试跟踪。

答案 1 :(得分:0)

对于在我的测试中使用Hibernate / Hypersonic SQL时写入数据库的类,我遇到了类似的问题。在eclipse中运行测试时Hypersonic连接的寿命比ant使用的短得多。因此,在Eclipse中的每个测试结束时都会删除数据库,但是在ant中从测试到测试都会保持不变。

如果您在数据库中写入数据,则需要在拆除时将其删除,以确保下一次测试不会获取数据。