TestNgの工場試験参照@DataProviderデータソース---工場試験の活用


以前、@Factoryは同じタイプのパラメータの変化性のテストに適していると述べましたが、パラメータ値に特定の規則がない場合は、@Factoryと@DataProviderを組み合わせてテストすることができます.
注意ポイント:@Factory自体がループテストのタイプであり、@DataProviderもテスト全体のループのタイプであるため、テスト方法が合計で実行される回数に注意してください.
Java code:
/**
 * 
 * <p>
 * Title: TestngFactoryDataProvider
 * </p>
 * 
 * <p>
 *  :testng-factoryDataProvider.xml
 * 
 * Description:
 *  @DataProvider , Factory , , :TestngFactoryTest
 * </p>
 * 
 * <p>
 * Company:
 * </p>
 * 
 * @author : Dragon
 * 
 * @date : 2014 10 22 
 */
public class TestngFactoryDataProvider {
	@Factory(dataProvider = "datasource")
	public Object[] createInstances(int a) {
		System.out.println(a);
		Object[] result = new Object[a];
		for (int i = 0; i < a; i++) {
			result[i] = new TestngFactoryTest(i * 10);
		}
		return result;
	}

	@DataProvider(name = "datasource")
	public Object[][] getDatasource() {
		return new Object[][] { new Object[] { 2 }, new Object[] { 4 } };
	}
}
public class TestngFactoryTest {
	private int m_numberOfTimes;

	public TestngFactoryTest(int numberOfTimes) {
		this.m_numberOfTimes = numberOfTimes;
	}

	private static int num;

	@Test
	public void testServer() {
		num++;
		System.out.println("num    " + num + "  m_numberOfTimes :"
				+ m_numberOfTimes);
	}
}

プロファイル:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!-- allow-return-values  FALSE,  -->
<suite name="framework_testng" allow-return-values="true">
	<test verbose="2" name="TestMethods">
		<classes>
			<class name="com.dragon.testng.annotation.TestngFactoryDataProvider">
			</class>
		</classes>
	</test>
</suite>

テスト結果:
num    1  m_numberOfTimes :20
num    2  m_numberOfTimes :10
num    3  m_numberOfTimes :0
num    4  m_numberOfTimes :30
num    5  m_numberOfTimes :10
num    6  m_numberOfTimes :0
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer

===============================================
    TestMethods
    Tests run: 6, Failures: 0, Skips: 0
===============================================

もし私が厚かましいなら、私が不器用だと思わないでください.私は知っているので、厚徳は物を積むことができて、人を助けることができて楽しいです.