当我从蚂蚁运行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
有人可以告诉我我做错了什么吗?我一直试图解决这个问题一整天,但我找不到解决方案。
答案 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>