電子書籍の厳選無料作品が豊富!

おおもととなる1つのテストケース(仮にA.class)内に対して、
@RunWith(Enclosed.class)アノテーションで、
複数のテストケース(仮にB.class、C.class)を、入れ子記述しています。

その中にある1つのテストケース(仮にB.class)で、
さらに、
@RunWith(Parameterized.class)アノテーションと、
@Parametersアノテーションを利用して、
テスト対象メソッドに渡す引数と期待値だけが異なるテスト
(戻り値はCollectionで、Collectionの要素はObject配列とする)
を複数回実行しています。

上記した1つのテストケース(仮にB.class)で、
Eclipse3.6上のJUnit4におきましては、
その1つのテストケースだけで
単体実行した際には、
全ての結果がOKになります。

しかし、
他にも存在している複数のテストケース(仮にC.class)とまとめて、
おおもととなる1つのテストケース(仮にA.class)から
実行した際には、上記した1つのテストケース(仮にB.class)
でのみ、以下のJUnit4エラーが発生しています。

java.lang.Exception;
No runnable methods

at java.lang.reflect.Constructor.newInstance(UnKnown Source)

このエラーを解消するには、どうすればよいでしょうか?
(コンストラクタをインスタンス時のエラーのようでしたので、
 以下に、コンストラクタ箇所を添付しておきます)

public B(
final String str_inTestData1, final int int_inTestData2,
final int int_inTestData3, final int int_inCnt) {

this.m_str_inTestData1 = str_inTestData1;
this.m_int_inTestData2 = int_inTestData2;
this.m_int_inTestData3 = int_inTestData3;
this.m_int_inCnt = int_inCnt;
}


@RunWith(Enclosed.class)アノテーション内に対して、
ネストで作成したサブのテストケース用クラスに対しては、
@RunWith(Parameterized.class)アノテーションと、
@Parametersアノテーションを利用することは
出来ないというような制限などがあるのでしょうか?

以上です。よろしくお願いします。

A 回答 (2件)

public static Collection data() {



総称型から判断される戻り値は

Collection<Object> となり配列と認識されてない。

総称型を定義しましょう。

この回答への補足

ご回答をありがとうございます。

さっそくネットで「Javaの総称型」を検索して見てみましたが、
今の私の環境を「Javaの総称型」として、
どのように変更すればよいのか?
残念ながら今だに検討がつかない状態です。
(すみません。恥ずかしながら「Javaの総称型」というものが存在することも、
 今回初めて知りました・・・)

もしよろしかったら、
今回のソースに限っての例として、
どのようにして、
今の私の環境を「Javaの総称型」に置き換えればよいか?
サンプルソースなどを
掲載していただけましたら幸いです。

ご回答をいただいておりながら、さらにお願いをして
申し訳ありませんが、もしよろしかったら、
よろしくお願いします。

補足日時:2011/07/19 17:46
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
その後、ネットで「Javaの総称型」を
時間をかけて調べて対応致しました。

本当にありがとうございました。

お礼日時:2011/07/20 18:11

@Parameters を設定しているメソッドは?

この回答への補足

レスポンスありがとうございます。
以下内容になります。

public static class A{

@RunWith(Parameterized.class)
public static class B{

@Parameters
public static Collection data() {

final List<Object[]> params = new ArrayList<Object[]>();
params.add(new Object[] {"ABC", 4, 8, -1});
params.add(new Object[] {"ABCD", 4, 8, 0});
params.add(new Object[] {"ABCDEFGHI", 4, 8, 1});
return params;
}

以上、よろしくお願いします。

補足日時:2011/07/19 13:55
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2011/07/20 18:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!