麻烦在eclipse上通过Ant运行简单的JUnit测试

时间:2015-03-17 21:27:02

标签: java eclipse ant junit

我在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。

2 个答案:

答案 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)。