2017-05-30 10 views
1

多数のパラメータ化されたオブジェクトを使用するクラスの1つでテストメソッドの名前を変更します。パラメータ化されたtestMethodの名前を変更

import org.testng.annotations.DataProvider; 
import org.testng.annotations.Test; 
/** 
* Unit test for simple App. 
*/ 
public class AppTest 
{ 
    static class data_class{ 
     public String name; 
     public String two; 
     public data_class(String name, String two){ 
      this.name = name; 
      this.two = two; 
     } 
    } 

    @DataProvider(name = "prov1") 
    public static Object[] prov1(){ 
     return new Object[] { new data_class("one", "one"), new data_class("two", "two") }; 
    } 

    @Test(dataProvider="prov1") 
    public void testApp(data_class input) 
    { 
     System.out.println(String.format("Name: %s Two: %s", input.name, input.two)); 
    } 
} 

テストラン(Eclipseで、確実なXMLレポートが類似している)の出力は、この出力を示し、メソッド名は気づく:私はそうのように設定した試験方法を持っている場合たとえば、

唯一の差別化として、クラスのオブジェクトIDとでTestApp:

Test Results

私はカスタム文字列を出力するテストメソッド名やパラメータのいずれかと私は簡単に壊れたものをテストケースを確認できジェンキンスにおけるように、テスト。

私はIAnnotationTransformerを実装するアノテーションリスナーを作成しようとしましたが、annotation.setTestName("test")を実行したときに結果の出力に影響がありませんでした。

どうすればこの問題を解決できますか?

+1

'data_class'に' toString() 'implを試しましたか?それ以外に、 'data_class'は最大のクラス名ではありません。 Javaのクラス名は大文字で、大文字で、CamelCaseです。例:「MyClass」 – Taylor

答えて

1

data_classクラスメソッドのtoStringを追加します。

public String toString(){ 
    return this.name; 
} 
+0

なぜこれについて考えなかったのかわかりませんが、私の場合はうまくいきます。ありがとう! 私は、任意の名前を設定する方法があるかどうかを判断したいと考えていました。たとえば、2つのオブジェクトを送信していて、その両方に基づいて名前を設定する必要がある場合、またはtoStringメソッドを変更できない場合 – Chris

+0

AFAIKは複数のオブジェクトにまたがることはできません。どちらのクラスでも両方のオブジェクトをラップすることができます。そうでなければ、両方のクラスのtoStringを意味のある名前に変換し、testngはコンマを区切って区切ります。 –

関連する問題