2012-01-19 7 views
0

私のプロジェクトをビルドするにはantを使用し、テストを書くにはjunitを使用しています。私は奇妙な問題に直面している。junitでのassertArrayEqualsの呼び出しantでの実行

import junit.framework.*; 

public class Test extends TestCase { 

    public Test(String name) { 
     super(name); 
    } 

    public testA() { 
      //..Code 

      Assert.arrayEquals(expected,actual) //This does not work 
      org.junit.Assert.arrayEquals(expected,actual) //This works ! 

    } 
} 

なぜ私が直接Assertクラスを使用することができorg.junitを追加していないする必要があります以下のコードを考えてみましょうか?。次のように私は私のbuild.xmlに設定するJUnitを持っている:

<property name="lib" value="./lib" /> 
<property name="classes" value="./build/classes" /> 
<property name="test.class.name" value="Test"/> 


<path id="test.classpath"> 
     <pathelement location="${classes}" /> 
     <pathelement location="./lib/junit-4.10.jar" /> 
     <fileset dir="${lib}"> 
      <include name="**/*.jar"/> 
     </fileset> 
</path> 


<target name="test" depends="compile"> 
     <junit fork="yes" haltonfailure="yes"> 
      <test name="${test.class.name}" /> 
      <formatter type="plain" usefile="false" /> 
      <classpath refid="test.classpath" /> 
      </junit> 
</target> 

答えて

0

変更

import junit.framework.*; 

import static org.junit.Assert.*; 

に私はjunit.frameworkパッケージが何のためにあるのか、正確にはわからないけど、インポートstatic trickは一般的な解決策であり、Assert's Javadoc pageに文書化されています。

+0

返信いただきありがとうございます。しかし、それはまだ動作していません。 Assert.assertArrayEqualsを呼び出すと、まだシンボルが見つかりません。 – Jim

+0

奇妙なことに、上記のコードでは、Assertクラスプレフィックスは必要ありません。つまり、単にassertArrayEqualsが機能するはずです。 –

関連する問題