2012-10-01 44 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

相關問題