0

アルファベットからランダムな文字を抽出して処理するアプリケーションがあります。私はJUnitが初めてで、それを使用しようとしています。定義済みの文字を提供し、それらが正しく処理されるかどうかをテストして、アプリケーションをテストしたいと考えています。文字をテスト済みプロジェクトに渡すにはどうすればよいですか?

テストケースで System.property を次のように設定してみました: System.setProperty( "string_array", LETTERS );

テスト済みのプロジェクトで次のように読み取ります。 String z = System.getProperty("string_array");

しかし、これはうまくいきません。

解決策、回避策はありますか、それとも完全に間違っていますか?

4

2 に答える 2

0

Android での単体テストはまだあまり行っていないことを認めなければなりません。しかし、理論的には、テスト対象 (プロジェクト) のコードを変更して単体テストを行うべきではありません。JUnit では、ホワイト ボックス テストを行います。つまり、アプリケーション全体を一度にテストする必要はなく、特定のメソッドまたはオブジェクトをテストします。JUnit から、プロジェクトの内部クラスをインスタンス化し、テスト対象のメソッドに任意のデータをフィードできます。これが、データをテスト対象に転送する方法です。

現時点ではコード例はありませんが、通常の JUnit TestCase クラスへの優れたアドオンがあるため、Android Testing Fundamentalsを読みたいと思うかもしれません。

于 2012-05-04T20:45:42.590 に答える
0

解決策は setActivityIntent です。

次のように、テスト対象のアクティビティにインテントを送信することで、テスト プロジェクトを設定できます。

public void setUp() throws Exception {
    Intent i = new Intent();
    i.putExtra("testLetterz", LETTERS);
    setActivityIntent(i);
    solo = new Solo(getInstrumentation(), getActivity());
}

そして、次のようにテストを実行します。

@Smoke
public void testCheckOneWord() throws Exception {
    for(int i = 0; i < 5; i++) {
        int r = -1;
        Movable m;
        do {
            r++;
            m = (Movable) solo.getView(Movable.class, r);
        } while(!(m.getLetter() == LETTERS.charAt(i)));
        int x = m.getPosX();
        int y = m.getPosY();
        solo.drag(x, 10, y, 10+i*Movable.getDropSize(), 1);

    }
    solo.clickOnButton("Check");
    boolean expected = true;
    boolean actual = solo.searchText("2/10");
    assertEquals("The test is not found", expected, actual);
}

テスト対象のアクティビティでは、インテントを読み取り、ランダムな文字を含む文字列を返すメソッドを使用しますが、testLetterz が null でない場合は testLetterz を返します。

この例では、文字を含むビューをドロップ ゾーンにドラッグし、それらが単語リストにあるかどうかを確認しました。

ロボティウムを使用しました。

于 2012-05-07T08:32:48.857 に答える