5

CodePro がメソッドのテストを自動的に生成する場合、多くの場合、同一のテストが生成されます。

/**
 * Run the String getCategoryID() method test.
 *
 * @throws Exception
 *
 * @generatedBy CodePro at 17/11/11 11:44 AM
 */
@Test
public void testGetCategoryID_1()
    throws Exception {
    Category fixture = new Category("");

    String result = fixture.getCategoryID();

    // add additional test code here
    // An unexpected exception was thrown in user code while executing this test:
    //    java.lang.NullPointerException
    //       at java.io.StringReader.<init>(StringReader.java:33)
    //       at xpath.XPathRunner.<init>(XPathRunner.java:23)
    //       at trademefacade.Category.retrieveCategoryID(Category.java:95)
    //       at trademefacade.Category.getCategoryID(Category.java:68)
    assertNotNull(result);
}

/**
 * Run the String getCategoryID() method test.
 *
 * @throws Exception
 *
 * @generatedBy CodePro at 17/11/11 11:44 AM
 */
@Test
public void testGetCategoryID_2()
    throws Exception {
    Category fixture = new Category("");

    String result = fixture.getCategoryID();

    // add additional test code here
    // An unexpected exception was thrown in user code while executing this test:
    //    java.lang.NullPointerException
    //       at java.io.StringReader.<init>(StringReader.java:33)
    //       at xpath.XPathRunner.<init>(XPathRunner.java:23)
    //       at trademefacade.Category.retrieveCategoryID(Category.java:95)
    //       at trademefacade.Category.getCategoryID(Category.java:68)
    assertNotNull(result);
}

これらは、次のメソッドのテストです。

public String getCategoryID() throws IOException,
        NoCategoryMatchException {
    categoryID = retrieveCategoryID();
    if (categoryID.equals("")) {
        throw new NoCategoryMatchException();
    }
    return categoryID;
}

CodePro を間違って使用していますか? 複数のテストは、2 つのテストを実装するためのヒントだと思っていましたが、テストをカスタマイズするたびに、CodePro がテストを再生成するときに、テストが書き直されてしまいます。

4

3 に答える 3

2

CodePro はよくわかりませんが、JUnit Test Case Generation - Executionを見てみると、次のようになります。

ターゲット メソッドの期待される結果を判断するために、コード ジェネレーターはそのメソッドを実行します。CodePro > JUnit > Test Execution 設定は、メソッドの実行で例外がスローされたときのコード ジェネレーターの応答を制御します。

コードが CodePro によって実行されているように見えますが、NullPointerException がスローされています。セットアップが正しく行われていない可能性があります。

コードには 2 つのパスがあるため、CodePro は 2 つのテスト ケースを生成していますが、NullPointerException は、別のテスト コードが生成されていないことを意味します。

関連するすべてのメカニズムを完全に理解しているわけではありませんが、retrieveCategoryId() を単に "" を返すメソッドに置き換えて、テストを再生成してみてください。これが機能する場合、それが問題です。解決策が何であるかはわかりません。google codepro のフォーラムで試してみてください。

于 2011-11-17T08:22:49.650 に答える
0

メソッドの 1 つをテストするために、複数のテスト メソッドを使用してもかまいません。GooglePro はメソッドの引数に対して異なる値を生成しようとしており、それらの値の組み合わせでテスト メソッドを作成しています。

ファクトリ クラスを (自動) 生成して、GooglePro がそれらの値を取得できるようにすることができます。あなたの場合、何も見つからない場合は、ファクトリ クラスを使用していないため、文字列の "" 値と new Category("") をメソッドに入力します。

ウィンドウ>設定> codePro> Junit>メソッド>最大で生成で、メソッドごとのテストメソッドの数を制限できます

ここに詳しい情報があります。 JUnit テスト ケースの生成

于 2012-12-21T08:27:50.167 に答える