蚂蚁

2016-04-11 237 views
1

我试图使用JUnit我的测试运行使用JUnit, 编译返回成功,但是当我运行它,我得到这个错误:蚂蚁

Error: Could not find or load main class Homewok2Test.class 

这里是我的build.xml:

<project name="othello" basedir="."> 
    <target name="compile"> 
     <javac srcdir="src" destdir="build"> 
     <classpath> 
      <pathelement path="lib/junit-4.12.jar"/> 
      <pathelement path="lib/hamcrest-core-1.3.jar"/> 
     </classpath> 
     </javac> 
     <jar jarfile="dest-client/othello-client.jar" basedir="build"> 
     <manifest> 
      <attribute name="Main-Class" value="Homewok2Test.class" /> 
     </manifest> 
     </jar> 
    </target> 
    <target name="run"> 
     <java jar="dest-client/othello-client.jar" fork="true"/> 
    </target> 
</project> 
+0

它真的叫“Homewok”吗?你真的需要使用“.class”后缀吗? –

+0

带测试类的文件被称为Homework2Test,如果我不使用后缀,我会得到相同的错误 – Olaf458

+0

因此,也许提到一个名为“Home ** wok ** 2Test”的类将不起作用。 –

回答

1

修改这个...

<attribute name="Main-Class" value="Homewok2Test.class" /> 

要...

<attribute name="Main-Class" value="Homework2Test" /> 

注意您上面的值有一个错字,这可能是另一个问题:Homewok

,并确保您Homework2Test类有一个主要的方法是这样的......

public static void main(String[] args) { 
    org.junit.runner.JUnitCore runner = new org.junit.runner.JUnitCore(); 
    org.junit.runner.Result result = runner.run(Homework2Test.class); 
} 

的价值在于你的类,而不是物理类文件路径完全合格的包路径。然后当你运行jar时,它会自动获取Main-Class属性并相应地运行该类。

如果您正在从您的Homework2Test类运行JUnit测试,那么一切都应该没问题,但如果您不是,那么您可能希望从Ant运行JUnit。

事情是这样的......

<target name="unit-test-1" > 
    <junit printsummary="yes" haltonfailure="yes"> 
    <classpath> 
     <pathelement location="${project.class.path}"/> 
     <pathelement location="${build.tests}"/> 
     <pathelement path="${java.class.path}"/> 
    </classpath> 
    <test name="com.jenkov.test.MyUnitTest" 
      haltonfailure="no" outfile="result"> 
     <formatter type="plain"/> 
     <formatter type="xml"/> 
    </test> 
    </junit> 
</target> 

this tutorial

或者this tutorial两者也可使用。

+0

我得到同样的错误。我不确定我是否以正确的方式使用junit,因为运行需要一些主类,但是在我的测试中没有主类'public class Homework2Test' – Olaf458

+0

我的假设是您正在运行您的JUnit测试类主要Homework2Test类?如果没有,那么你将不得不从你的Ant build.xml文件中指定正在运行的JUnit。参见[THIS](https://ant.apache.org/manual/Tasks/junit.html),了解如何做到这一点。 – ManoDestra

+0

我不知道我应该输入什么“$ {project.class.path}”和“$ {java.class.path}” – Olaf458

0

所以我添加

<target name="run"> 
      <junit printsummary="yes" haltonfailure="yes"> 
       <classpath> 
        <pathelement path="lib/junit-4.12.jar"/> 
        <pathelement path="lib/hamcrest-core-1.3.jar"/> 
        <pathelement path="dest-client/othello-client.jar"/> 
        <pathelement location="lib/junit-4.12.jar"/> 
        <pathelement location="lib/hamcrest-core-1.3.jar"/> 
        <pathelement location="dest-client/othello-client.jar"/> 
       </classpath> 
       <test name="Homework2Test" haltonfailure="yes" outfile="result"> 
        <formatter type="plain"/> 
        <formatter type="xml"/> 
       </test> 
      </junit> 
<target/> 

接下来的问题是拼写,在我第一次构建我有Homewok2Test,这是不正确。正确的课是Homework2Test