1

Junit のパラメーター化されたテストは通常​​、Object 配列のコレクションを返しますが、テスト クラスのコンストラクター型は何でもできますか?

例えば:-

//Some class constructor
public parametrization (String username, String password, int pincode){
    this.username=username;
    this.password=password;
    this.pincode=pincode;
}

@Parameters
public static Collection<Object[]> getdata(){
    Object[][] data = new Object[2][3];  
    //row 1st
    data [0][0] = "usernamea";
    data [0][1] = "passa";
    data [0][2] = new Integer(111);
   }

ご覧のとおり、メソッドによって返されるパラメーターはgetdata()実際にはオブジェクト型ですが、実行時にコンストラクターの引数に割り当てられます。これは、たとえば Java ルールに従って互換性のない String、Integer などの Object の他のサブクラス型です。 :- 文字列型オブジェクトをオブジェクト型に割り当てることはできません...

それで、オブジェクト型として返された値を型キャストして、コンストラクターの引数の型に合わせて String と言うのは Junit フレームワークですか?

ここで何か不足していますか?

4

1 に答える 1

1

あなたが提案したように、値はキャストされています。キャストは、実際には Java リフレクション API によって行われます。具体的には、Constructor.newInstance(Object...).

興味のある方は、上記のメソッドが 186 行目で JUnit によって呼び出されていることを確認してください (JUnit v4.11 ソース)

于 2013-08-12T00:02:04.503 に答える