junit和ant问题。无法开始测试

时间:2010-09-27 11:33:39

标签: ant junit

当我从蚂蚁运行junit测试时,我总是得到:

D:\metrike>ant test
Buildfile: build.xml

init:

compile:

test:
    [junit] Running jmt.test.TestCodeBase
    [junit] Testsuite: jmt.test.TestCodeBase
    [junit] Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0,046 sec
    [junit] Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0,046 sec
    [junit]
    [junit] Testcase: warning(junit.framework.TestSuite$1):     FAILED
    [junit] No tests found in jmt.test.TestCodeBase
    [junit] junit.framework.AssertionFailedError: No tests found in jmt.test.TestCodeBase
    [junit]
    [junit]
    [junit] Test jmt.test.TestCodeBase FAILED

这是ant文件:

<target name="test" depends="compile">
    <mkdir dir="target/test-results"/>
    <junit haltonfailure="no" printsummary="on">
        <classpath >
            <pathelement location="target/classes"/>
            <pathelement location="Libraries/junit3.8.1/junit.jar"/>
        </classpath>
        <formatter type="brief" usefile="false"/>
        <formatter type="xml" />
        <batchtest todir="target/test-results" >
            <fileset dir="target/classes" includes="**/TestCodeBase.class"/>
        </batchtest>
    </junit>
</target>

但是当我手动运行测试时,junit测试有效:

D:\metrike>cd target

D:\metrike\target>cd classes

D:\metrike\target\classes>java jmt.test.TestCodeBase
fatsource.jar eclapsed : 2297 ms
over all : 2297 ms
contains 3073 classes and 3700 referred classes, 35968 referred methods, 22351 referred fields
Memory usage: 21326 KB
Post gc-memory usage: 19506 KB
contains 3073 classes and 3700 referred classes, 35968 referred methods, 22351 referred fields

有人可以告诉我我做错了什么吗?我一直试图解决这个问题一整天,但我找不到解决方案。

3 个答案:

答案 0 :(得分:4)

1)jmt.test.TestCodeBase是否扩展了TestCase(junit.framework.TestCase)?

如果没有,则需要通过junit ant任务来获取它。

2)该类是作为junit TestCase编写的,还是只是从main方法调用?有关以Junit3样式编写简单测试的示例,请参阅this link。对于Junit4,只需在方法上方添加@Test。

3)测试方法是Junit3样式(每个方法都以test开头)还是Junit4样式(每个方法都有@Test高于它)?

如果Junit3,你应该好好去。如果是Junit4,则需要在ant类路径中包含Junit4测试库,而不是使用junit3.8.1。

答案 1 :(得分:1)

看来你的测试类实际上并不是一个JUnit测试类。手动运行时,您不是将其作为测试运行,而是作为常规Java应用程序运行。这个班有一个主要的方法吧?要作为JUnit 3(您似乎正在使用)测试,该类需要扩展TestCase并具有一个或多个名为以'test'开头的公共void方法。对于测试,我会尝试在IDE中将该类作为JUnit测试运行。

答案 2 :(得分:0)

请发布jmt.test.TestCodeBase的示例代码,特别是。类定义和测试方法之一。

我看起来像是使用public static int main()而不是JUnit约定public void testFoo()方法。如果您使用的是JUnit4,那么您的测试方法应该有@Test注释。

JUnit测试通常不能仅使用java <Testclass>

运行