TestNG 四 測試方法之工廠

工廠允許你動態的創建測試。例如,假設你需要創建一個測試方法,並用它來多次訪問一個web頁面,而且每次都帶有不同的參數:

public class TestWebServer {
  @Test(parameters = { "number-of-times" })
  public void accessPage(int numberOfTimes) {
    while (numberOfTimes-- > 0) {
     // access the web page
    }
  }
}

testng.xml:

<test name="T1">
  <parameter name="number-of-times" value="10"/>
  <class name= "TestWebServer" />
</test>
<test name="T2">
  <parameter name="number-of-times" value="20"/>
  <class name= "TestWebServer"/>
</test>
<test name="T3">
  <parameter name="number-of-times" value="30"/>
  <class name= "TestWebServer"/>
</test>

參數一旦多起來,就難以管理了,所以應該使用工廠來做:

public class WebTestFactory {
  @Factory
  public Object[] createInstances() {
   Object[] result = new Object[10];  
   for (int i = 0; i < 10; i++) {
      result[i] = new WebTest(i * 10);
    return result;
  }
}

新的測試類如下:

public class WebTest {
  private int m_numberOfTimes;

  public WebTest(int numberOfTimes) {
    m_numberOfTimes = numberOfTimes;
  }
  @Test
  public void testServer() {
   for (int i = 0; i < m_numberOfTimes; i++) {
     // access the web page
    }
  }
}

你的testng.xml 只需要引用包含工廠方法的類,而測試實例自己會在運行時創建:

<class name="WebTestFactory"/>

工廠方法可以接受諸如 @Test 和 @Before/After 所標記的參數,並且會返回 Object[]。這些返回的對象可以是任何類(不一定是跟工廠方法相同的類),並且他們甚至都不需要TestNG註解(在例子中會被TestNG忽略掉)

本文轉載自:http://blog.sina.com.cn/bestfeiyong 

發佈了15 篇原創文章 · 獲贊 6 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章