2016-09-25 5 views
1

初めてtestNGを使用していて質問がありました。私は、jsonファイルからいくつかのデータを読み込み、dataProvidersと一緒にデータを使用していくつかのテストを書き込もうとしています。私はjsonファイルからデータを取り出し、テストする必要があるすべてのデータのマップを構築するparseDataメソッドを持つヘルパーファイルを持っています。私の主なテストファイルでは、次のようにテストを定義します:不正なデータプロバイダ設定によるテストのスキップ

私の主なテストファイルでは、tDataHelperクラスのparseDataメソッドを呼び出すBeforeClassメソッドもあります。

テストが実行されるたびに、createStudentsデータプロバイダをデバッグしようとするたびに、tDataHelperファイルに空のマッピングが存在するため、テストはスキップされます。私はこれが静的対インスタンスと関係があると思うし、何が間違っているのか正確には分からない。以下のコードはokのように見え、うまくいくはずですか?誰かがこれについていくつかの光を当てることができますか?

public class testStudents 
    { 
     private static tDataHelper helper = new tDataHelper(); 

     @BeforeClass 
     public void setup() throws Exception 
     { 
      tDataHelper.parseData(); 
     } 

     @FunctionalTest 
     @Test(dataProvider = "createStudents", dataProviderClass = tDataHelper.class) 
     public void testCreateStudents(List<Student> studentsToCreate){} 
    } 


    public class tDataHelper 
    { 
     private static List<Student> studentsToCreate = new HashSet<>(); 

     static void parseData() throws Exception 
     { 
      // read in json file and add students to the students list 
      // studentsToCreate.add(node.parse(....)) 
     } 

     @DataProvider 
     public static Object[][] createStudents() 
     { 
      return new Object[][]{ 
       { 
        studentsToCreate 
       } 
     } 
} 
+0

詳細または特定のex十分? –

+0

@amitbhoraniyaこんにちは、私はそれが役立つことを望んでいくつかの詳細を追加しました –

+0

ありがとう...これらは役に立つかもしれません:) –

答えて

0

データプロバイダクラスに設定上の問題がある可能性があります。

ループ全体を繰り返し処理しますか?右!次に、テスト方法は以下のようになります。

@Test(dataProvider = "createStudents", dataProviderClass = tDataHelper.class) 
public void testCreateStudents(Student studentsToCreate){} 

StudentクラスをStringクラスに置き換えてサンプルを更新しました。以下は動作例です。 下記のコードで確認してください。

public class tDataHelper { 
    private static List<String> studentsToCreate = new ArrayList<String>(); 

    static void parseData() throws Exception { 
     studentsToCreate.add("user1"); 
     studentsToCreate.add("user2"); 
     studentsToCreate.add("user3"); 
    } 

    @DataProvider 
    public static Object[][] createStudents() { 
     Object[][] objArray = new Object[studentsToCreate.size()][]; 
     for (int i = 0; i < studentsToCreate.size(); i++) { 
      objArray[i] = new Object[1]; 
      objArray[i][0] = studentsToCreate.get(i); 
     } 
     return objArray; 
    } 
} 

public class testStudents { 
    private static tDataHelper helper = new tDataHelper(); 

    @BeforeClass 
    public void setup() throws Exception { 
     tDataHelper.parseData(); 
    } 
    @Test(dataProvider = "createStudents", dataProviderClass = tDataHelper.class) 
    public void testCreateStudents(String studentsToCreate) { 
     System.out.println(studentsToCreate); 
    } 
} 

私はJson Data Providerためqafを使用していますので、手動であなたのJSONデータを解析する必要はありませんし、データプロバイダクラスから取り除きます。

0

データプロバイダはスタンドアロンであり、外部から初期化されていないものとします。 the documentationを確認してください。 1をUTILSし、テストでそれを使用

public class testStudents { 

    @FunctionalTest 
    @Test(dataProvider = "createStudents", dataProviderClass = tDataHelper.class) 
    public void testCreateStudents(List<Student> studentsToCreate){} 
} 


public class tDataHelper { 

    private static List<Student> parseData() throws Exception { 
     // read in json file and add students to the students list 
     // studentsToCreate.add(node.parse(....)) 
    } 

    @DataProvider 
    public static Object[][] createStudents() { 
     return new Object[][]{ 
      { 
       parseData(); 
      } 
     }; 
    } 
} 
  • は、あなたのクラスを使用する:

    public class testStudents { 
    
        private static List<Student> studentsToCreate; 
    
        @BeforeClass 
        public void setup() throws Exception { 
         studentsToCreate = tDataHelper.parseData(); 
        } 
    
        @FunctionalTest 
        @Test 
        public void testCreateStudents() {} 
    } 
    
    
    public class tDataHelper { 
    
        public static List<Student> parseData() throws Exception { 
         // read in json file and add students to the students list 
         // studentsToCreate.add(node.parse(....)) 
        }  
    } 
    
    のためにそれが設計されてどのようにデータプロバイダを使用して

    1. あなたは選択肢を持っています

  • 関連する問題