2012-10-01 45 views
2

我试图用蚂蚁的Junit测试。Junit测试错误与蚂蚁,没有消息,没有给出的理由

既然我真的不知道如何在没有日食的情况下编写Junit测试,那么我将从我在网上找到的完全无关紧要的东西开始。这应该总是通过。

Test1.java

import junit.framework.*; 
public class Test1 extends TestCase { 
    @Test 
    public void testOne() 
    { 
    System.out.println("Heyy there I'm a test!"); 
    assertTrue("TestExample", true); 
    } 
} 

我添加到我的build.xml这些...

49 <target name="junit" depends="jar"> 
50  <junit printsummary="withOutAndErr" fork="yes" showoutput="yes"> 
51  <classpath refid="application"/> 
52  <test name="test.Test1"/> 
53  </junit> 
54 </target> 

所以现在当我运行 “ant的junit” 我越来越

junit: 
    [junit] Running test.Test1 
    [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec 

所以......这并没有告诉我什么......错在哪里?如何解决它?没有。 任何人都知道发生了什么事?

回答

1

我可以重现它。我期待junit给一些更详细的消息,如Class test.Test1 not found。但是,不,它只是失败。这意味着该类不在类路径中。打开你的jar文件(使用像7zip这样的存档器来确认)。

而且并不奇怪,因为你的类不能编译:)添加以下内容:

package test; 
import org.junit.Test; 

,你的第一个测试应该通过。

+0

+1此外,删除导入junit.framework。*,这只会混淆问题...... –

+0

@Matthew没有'junit.framework。*'它不会识别'TestCase'和'assertTrue'。他需要以某种方式宣布他们,而这条线似乎可以完成这项工作。 – Jarekczek

+1

@您不应该在同一个测试用例中混用并匹配junit3(junit.framework。*)和junit4(org.junit。*)。它只会混淆事物。使用一个或另一个。如果你决定使用junit4(@Test),你不需要扩展TestCase,他应该使用org.junit.Assert; –

0

@jarekczek通过让我知道Junit不是一些需要单独编译执行的外部事物,而是需要使用其他源文件将其编译到jar中。

问题是,我把我的测试/目录下我的src /目录之外,当蚂蚁编译src中的Java文件/它没有文件Test1.java编译成Test1.class

我感动测试/文件夹放到src /文件夹中,现在我从javac编译器获得了更多信息错误消息,并且能够修复它。非常感谢!

+1

Evan,我建议你有两个独立的源代码树,它们具有相同的封装结构。 'src'树和'src-test'树。对于'my.test'包,你可以在两棵树上都有目录'my/test'。这使得它能够将测试与应用程序文件分开,但是从另一方面来说 - 它们都在相同的包中,并且能够访问对方。所以我用junit做的事情有两个jar:'app.jar'和'app-tests.jar'。当我运行测试时,我在类路径中提供了两个jar。当我释放时,我只释放主要的罐子。别客气! – Jarekczek

相关问题