我在eclipse中进行了以下JUnit测试:
package test;
import org.junit.Test;
public class SimpleJUnitTest
{
@Test
public void doTest() { System.out.println("Test did run"); }
}
以下build.xml位于同一文件夹中:
<?xml version="1.0" encoding="UTF-8"?>
<project name="LoggerTest" default="JUnitTest" basedir=".">
<target name="JUnitTest">
<junit>
<classpath location="../../lib/junit.jar" />
<test name="test.SimpleJUnitTest" />
</junit>
<echo>boo</echo>
</target>
</project>
如果我在&#34; Run As ...&#34;下运行测试类。并选择JUnit,它运行没有错误。如果我在&#34; Run As ...&#34;下运行build.xml。并选择Ant Build,我得到以下输出:
Buildfile: C:\Users\995868\workspace\JUnit1\tst\test\build.xml
JUnitTest:
[junit] Test test.SimpleJUnitTest FAILED
[echo] boo BUILD SUCCESSFUL Total time: 390 milliseconds
如果我在JUnit下删除了classpath属性,我得到一个关于在类路径上需要junit jar的不同错误消息,所以我认为JUnit正在被调用。我只是不明白它的错误在这里。我已经尝试在类中加入静态块代码,以便在加载类时执行System.out.println()
,并且它没有出现,所以我似乎在配置中做错了。
有人可以告诉我这里有什么问题吗?
编辑:
directory structure:
JUnit1
--bin
--test
--SimpleJUnitTest
--lib
--junit.jar
--scripts
--build.xml
--src
--tst
--test
--SimpleJUnitTest.java
我还将build.xml复制到tst并从该目录的命令行运行它,结果相同。
我已经将junit.jar复制到了%ant_home%\ lib而没有任何效果,但是当我从类路径中取出pathelement行时,我收到了消息&#34; for必须包含junit.jar,如果没有在Ant的自己的类路径&#34;。我不确定蚂蚁在哪里?#34;蚂蚁自己的类路径&#34;已指定。带有新错误消息的类路径块是:
<classpath>
<pathelement location="c:/users/995868/apache-ant-1.9.4/lib" />
<pathelement location="../bin" />
</classpath>
我没有在任何地方使用hamcrest功能,所以我没有查找并将其放入。我试图做一个简单的例子,而ant(至少)下的junit文档确实如此没有提到必须使用hamcrest。
答案 0 :(得分:2)
我想你的ant类路径中缺少 hamcrest-core.jar 。
编辑:,您也从类路径中遗漏了测试文件类本身。因此,您需要以下列方式更新类路径:
<classpath>
<pathelement location="bin"/> <!--here is your test class-->
<pathelement location="lib/hamcrest-core-1.3.jar"/>
<pathelement location="lib/junit-4.12.jar"/>
</classpath>
答案 1 :(得分:0)
您的类不包含任何测试用例,这是一个错误。您的@Test注释将被忽略,因为您尚未指定实际使用它的@RunWith,因此JUnit会搜索名为“test ...”的方法。
所以你有两个选择:
a)将您的方法重命名为“testSomething”或类似方法。
b)在类定义上方添加@RunWith(BlockJUnit4ClassRunner.class)
两种方式都将确保您的班级中至少存在一个测试,通过命名约定(a)或通过注释(b)。