2011-08-02 13 views
1

私はJUnitで自動回帰テストを設定しています。現在、ビルドスクリプトはTestSuiteを呼び出すように設定されています。TestSuiteはTestSuiteにさまざまなテストをパックして返します。Ant、JUnit、およびTestSuite

ビルドファイル:

<target name="test-perform-check" depends="test-compile"> 
     <junit printsummary="yes" fork="yes" haltonfailure="no"> 
      <classpath path ="${mypath}" /> 
      <jvmarg value="-Djava.ext.dirs=${extstar};${extpathextended};" /> 
        <jvmarg value="-Dmipav=${mipav};" /> 
      <sysproperty key="mipav" value="${mipav}"/> 
      <formatter type="xml"/> 
      <formatter type="plain" usefile="false"/> 
      <test name="test.JTest"/> 
     </junit> 
    </target> 

JTest.java:

class JTest extends TestSuite { 

    public static Test suite() { 
     // set up a bunch of stuff 
     TestSuite suite = new TestSuite(); 
     suite.addTest(new VolumeCompare()); 
     suite.addTest(new VolumeCompare()); 
     suite.addTest(new VolumeCompare()); 
     suite.addTest(new FileExistence()); 
     // do some other stuff 
     return suite; 
    } 
} 

出力:

[junit] Testcase: null took 0.002 sec 
[junit]  FAILED 
[junit] null 
[junit] junit.framework.AssertionFailedError 
[junit] 
[junit] Testcase: null took 0 sec 
[junit]  FAILED 
[junit] null 
[junit] junit.framework.AssertionFailedError 
[junit] 
[junit] Testcase: null took 0.002 sec 
[junit]  FAILED 
[junit] null 
[junit] junit.framework.AssertionFailedError 
[junit] 
[junit] Testcase: null took 0 sec 
[junit]  FAILED 
[junit] null 
[junit] junit.framework.AssertionFailedError 
[junit] 
[junit] Test test.JTest FAILED 

私の質問です - 私はアリ実行を行うためにbuildscriptに変更する必要が何をすべきかテストは適切ですか?

編集:

VolumeCompare.java:junit task documentationから

public class VolumeCompare extends TestCase { 
    public VolumeCompare (...) { 
     // ctor 
    } 
    @Test 
    public void testVolume() { 
     // this print statement is never reached 
     System.out.println("testing volume"); 
     // compare volumes here 
    } 
} 
+0

'VolumeCompare.java'ファイルを投稿できますか? –

+0

。私はそれを修正することができれば、私はそれをそこに投げるだろうとまだそれをぶつける。 – ellioth

答えて

0

、私はテストの属性は、単一のテスト(というよりもスイート)を含むクラスを使用する必要があると思います。たぶん、あなたはこのように、与えられたパッケージ内のすべてのテストを実行するためのAnt依頼するパターンを使用することができます:テストスイートを使用している場合

<batchtest fork="yes" todir="${reports.tests}"> 
    <fileset dir="${src.tests}"> 
    <include name="**/*Test*.java"/> 
    <exclude name="**/AllTests.java"/> 
    </fileset> 
    </batchtest> 
+0

はい、私は*すべてのテストをすぐに実行する* antを望んでいません。私はテストを実行する前に(私はたくさんの数字を集めています)、テストスイートを返すことはしたくありません。 – ellioth

+0

ああ、それはあなたが「セットアップの束を意味する」ということです、ごめんなさい。あなたはいつもこの番号のチャニングを行うためにアリタスクをセットアップし、テストタスクがこの数のクリーンナップタスクに依存するようにするオプションを持っています - もちろん、テストクラスがこの番号をどのように使用するかによって決まります...あなたは合格しますかあなたのTestクラスのctorへのデータ?またはdb/fileに格納されていますか? – phtrivier

+0

さて、あなたと同じことをしている他の記事が見つかりました(http://opensource-soa.blogspot.com/2008/07/how-to-run-junit-test-suite-from-ant.html) 。だから、おそらく問題はあなたのテスト自体にあるのですが、あなたが投稿したものを伝えるのは難しいです... – phtrivier

0

一度にあなたのスイートに1つのテストケースをテストケースを追加し、あなたの構文は、より多くのを見なければなりません

suite.addTest(new VolumeCompare("testCase1")); 
suite.addTest(new VolumeCompare("testCase2")); 
suite.addTest(new VolumeCompare("testCase3")); 

実行するテストの名前を渡すことはないため、「null」を実行しようとすると失敗します。

関連する問題