2016-11-02 20 views
2

私は3つのJavaテストクラスを持っています。 2つのtestfixtureクラス以上 1. ListenerTest1.java 2. ListenerTest2.java 3. ListenerMain.java別のJavaクラスからテストクラスを実行するには

はListenerTest1.javaとListenerTest2.javaは、テストメソッドを持っているすなわち。 はまた、持っbuild.gradleファイルはよう: - 私のハドソンジョブを実行中に

task automationTests(type: Test) { 

    systemProperty 'serviceType', System.properties['serviceType'] 


    useTestNG { 
     useDefaultListeners = true 
     suiteXmlBuilder().suite(name: 'Testing case') { 
      test(name: 'ServiceUITests', annotations: 'JDK', verbose: '1') { 
       classes([:]) { 

        'class'(name: 'company.platform.ListenerMain') 

       } 
      } 
     } 
    } 
} 

だから、それは、automationTestsすなわちタスクを呼び出して、私のListenerMainクラスを実行します。 上記の2つのクラスのいずれか、つまりListenerTest1.javaまたはListenerTest2.javaを実行するために、hudsonジョブに追加されたSystem.propertyに基づいて、ListenerMainクラスファイルのif/else条件を区別する必要があります。

例えば

@Listeners(value = {PreconditionListener.class}) 
public class ListenerMain { 
    private static String serviceTypeUseParameter ; 
    private static Logger logger = LogManager.getLogger(ListenerMain .class.getName()); 
    @BeforeClass 
    //TestNg Annotation 
    public void setup() 
    { 
     //############# Hudson job parameter is serviceType ########## 
serviceTypeUseParameter = System.getProperty("serviceType"); 
     if (serviceTypeUseParameter.equals("ListenerTest1Method")){ 
     // Run ListenerTest1 class 
     } 
     else{ 
     // Run ListenerTest2 class 
     } 
    } 
} 
のif/else条件ごとにクラスをロードするために追加する必要がどのようなコード

? 必要に応じて、mainメソッドをListenerMainクラスに追加できます。

+0

これを参照してくださいhttp://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html#runClasses(java.lang.Class ...) – Jobin

+0

ListenerTest1とListenerTest2を共有できますか?彼らはどのインタフェースを実装していますか? – juherr

+0

どちらのクラスでもインタフェースが使用されていません。 TestNgアノテーションを使用するテストケース(テストmtthods)で構成される単純なTestFixtureクラスです。 –

答えて

0

if/elseコードに以下のコードを追加することができます。 runClassesメソッド内で、テストクラスを指定することができます。

Result result = JUnitCore.runClasses(ListenerTest1.class); 
+0

なぜ私はTestNgを使用しているのJUnitCore? –

+0

TestNGはJUnitとNUnitの行で開発されたテストフレームワークです。私はこの目的でJUnitCoreを使用することができると思います。 –

0

あなたはTestNGの中に2つのオプションがあります。

  1. annotation transformerを実装します。
  2. 使用BeanShell

条件が満たされない場合はあなたの注釈変圧器は「偽=有効」状態をテストして、属性を追加するには@Test注釈をオーバーライドします。

+0

前述のように、私はListenerTest1とListenerTest2という2つのdiffクラスを持っているので、ListenerMainクラスからクラス全体を呼び出す必要があります。 –

関連する問題