0

データプロバイダーからの異なるデータを使用するためにいくつかのテストメソッドを実行する方法はありますか?

例えば

@DataProvider(name = "test1")
public Object[][] createData1() {
    return new Object[][] {
        { "Cedric", new Integer(36) },
        { "Anne", new Integer(37)}, 
    };
}


@Test(dataProvider = "test1")
public void verifyData1(String n1, Integer n2) {
    System.out.println(n1 + " " + n2);
}

@Test
public void verifyData2() {
    System.out.println("Verify2");
}

そして、これを実行した結果は、 Cedric
36
Verification2 Anne37Verify2になります 。


4

2 に答える 2

1

そのクラスで複数のデータプロバイダーを使用しないのはなぜですか?

@DataProvider(name = "test1")
public Object[][] createData1() {
    return new Object[][] {
        { "Cedric", new Integer(36) },
        { "Anne", new Integer(37)}, 
    };
}

@DataProvider(name = "test2")
public Object[][] createData2() {
    return new Object[][] {
        { "Amir", new Integer(42) },
        { "Alice", new Integer(39)}, 
    };
}


@Test(dataProvider = "test1")
public void verifyData1(String n1, Integer n2) {
    System.out.println(n1 + " " + n2);
}

@Test(dataProvider = "test2")
public void verifyData2(String n1, Integer n2) {
    System.out.println(n1 + " " + n2);
}
于 2012-06-07T21:41:53.213 に答える
0

これを行う1つの方法は次のとおりです。アノテーションを使用して、どのメソッドがどのデータを受信するかを指定します。

public class A {

  @DataProvider
  public Object[][] dp(Method m) {
    if (m.getAnnotation(Different.class) != null) {
      return new Object[][] {
          new Object[] { "different-a", "different-b" },
          new Object[] { "different-c", "different-d" },
        };
      } else {
        return new Object[][] {
            new Object[] { "c", "d" },
            new Object[] { "a", "b" },
        };
      }
    }

  @Test(dataProvider = "dp")
  public void test1(String a, String b) {
    System.out.println("test1: " + a + " " + b);
  }

  @Different
  @Test(dataProvider = "dp")
  public void test2(String a, String b) {
    System.out.println("test2: " + a + " " + b);
  }
}

注釈:

@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@Target({METHOD})
public @interface Different {}

出力:

test1: c d
test1: a b
test2: different-a different-b
test2: different-c different-d
于 2012-06-05T20:23:16.200 に答える