- PR -

EclipseでJUnitを使う

1
投稿者投稿内容
すひろ
大ベテラン
会議室デビュー日: 2006/10/17
投稿数: 124
お住まい・勤務地: 愛知県
投稿日時: 2006-12-27 21:32
いつも勉強させていただいてます。
Struts1.2.9 / Tomcat5.0 / Eclipse3.2を使って作成したWebアプリケーションに対して、
JUnitを使ったテストを実施したいのですが、うまく行きません。

 http://www.ki.rim.or.jp/~kuro/Java/JUnit/JUnit-01.html
 http://members.jcom.home.ne.jp/j-klein/java/junit-basic.html
これらのページを参考に下記テストクラスを作成しました。
ところが、Eclipseのメニューから実行(R)→実行→JUnitテストを実行すると、
「Test type does not exist.」という警告が出るだけです。
testAddメソッドで必ずテスト失敗になるはずですが…。

どこが間違っているのか、わかる方がいましたら教えていただけないでしょうか。

なお、junit.jarのビルドパスへの追加は完了しています。
よろしくお願いします。

public class A001ActionTest extends TestCase {

  protected int fValue1;
  protected int fValue2;

  /**
   * コンストラクタ
   */
  public A001ActionTest(String name) {
   // 必ずStringを受け取る
   super(name);
  }

  protected void setUp() {
    // 各テスト開始ごとに共通に行われる処理
    fValue1= 2;
    fValue2= 3;
  }

  public static Test suite() {
    // 全てのテストメソッドを対象とする
    return new TestSuite(SimpleTest.class);
  }
  
  public static void main (String[] args) {
    junit.textui.TestRunner.run(suite());
  }
  
  public void testAdd() {
    double result= fValue1 + fValue2;
    // テスト失敗になるはず
    assertTrue(result == 6);
  }
}
さいくろう
大ベテラン
会議室デビュー日: 2005/11/19
投稿数: 170
お住まい・勤務地: 川崎市
投稿日時: 2006-12-27 21:46
Eclipseのメニューから叩くんだったら、
コンストラクタ無し、必要に応じてsetUp()とtearDown()、
あとはtestXXX()だけ、で大丈夫だと思うよ。
大ベテラン
会議室デビュー日: 2006/06/28
投稿数: 116
投稿日時: 2006-12-27 22:51
JUnitの動作を追ったわけではないですが、
suite()がファクトリメソッドとして呼ばれるのだと思います。
JUnitでTestCaseを呼び出す場合、suite()がないければデフォルトで自身が呼ばれていたとおもいますが、
スレ主さんのソースには
コード:
  public static Test suite() {
    // 全てのテストメソッドを対象とする
    return new TestSuite(SimpleTest.class);
  }


が存在するためクラスSimpleTestを解決しようとして失敗しているのではないでしょうか?
A001ActionTestのテストを行おうとしているのであれば(多分そうですよね?)
SimpleTest.class -> A001ActionTest.classとするか
suiteメソッドを削除することで解決すると思います。
すひろ
大ベテラン
会議室デビュー日: 2006/10/17
投稿数: 124
お住まい・勤務地: 愛知県
投稿日時: 2007-01-03 19:25
javaファイルを右クリックしてJUnitテストケース(〜Test.java)を作成するとき、
ソース・フォルダー欄にソースフォルダ指定をしていないフォルダを設定していたのが原因でした。
「ビルド・パスの構成」でソースフォルダーを追加したら正しく動き、testAddメソッドでの失敗を検知してくれました。
初歩的な間違いでご迷惑をおかけしました。

public class A001ActionTest extends TestCase {

  protected int fValue1;
  protected int fValue2;

  public static Test suite() {
    return new TestSuite(A001ActionTest.class);
  }

  /**
   * 各テスト開始ごとに共通に行われるメソッド。
   */
  protected void setUp() {
    fValue1= 2;
    fValue2= 3;
  }

  /**
   * 各テスト終了ごとに共通に行われるメソッド。
   */
  protected void tearDown(){
  }
   
  public void testAdd() {
    double result= fValue1 + fValue2;
    // テスト失敗になるはず
    assertTrue(result == 6);
  }
1

スキルアップ/キャリアアップ(JOB@IT)