WEB开发网
开发学院软件开发Java 追求代码质量: 使用 Selenium 和 TestNG 进行编程... 阅读

追求代码质量: 使用 Selenium 和 TestNG 进行编程式测试

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 测试细节创建一个 DbUnit fixture 并在测试级别上运行,这意味着运行任何测试之前,追求代码质量: 使用 Selenium 和 TestNG 进行编程式测试(9),测试类的集合将共享相同的逻辑,为数据库正确地播种,它使用所需的种子文件播种数据库,请注意:该 fixture 被定义为包含

测试细节

创建一个 DbUnit fixture 并在测试级别上运行,这意味着运行任何测试之前,测试类的集合将共享相同的逻辑,为数据库正确地播种。在本文的示例中,在运行每个逻辑测试集合前,我希望数据库具有一组干净的数据。使用 DbUnit 的 CLEAN_INSERT 命令确保在先前运行的测试中创建的行被删除掉 —— 因此,我可以重新运行测试,该测试可以不断创建数据并且不用考虑数据库约束。

此外,我希望 fixture 能够依赖参数化数据,这使我在运行某个测试之前,能够灵活地切换种子文件,甚至是特定数据库的位置。将 TestNG 与参数相关联起来再简单不过了:我所需做的仅仅是使用 Parameters 注释装饰 fixtrue,声明方法签名中相应的参数,并提供 TestNG 配置文件中的值。

清单 8 定义了一个简单的 DbUnit fixture,它使用所需的种子文件播种数据库。请注意:该 fixture 被定义为包含五个 参数。(这可能非常多,但是在 fixture 中包含参数不是很好吗?)


清单 8. 测试集合的 DbUnit fixture
public class DatabaseFixture { 
 
 @Parameters({"seed-path","db-driver","db-url","db-user","db-psswrd"}) 
 @BeforeTest 
 public void seedDatabase(String seedpath, String driver, 
  String url, String user, String pssword) throws Exception { 
 
 IDatabaseConnection conn = this.getConnection(driver, url, user, pssword); 
 IDataSet data = this.getDataSet(seedpath); 
 
 try { 
  DatabaseOperation.CLEAN_INSERT.execute(conn, data); 
 }finally { 
  conn.close(); 
 } 
 } 
 
 private IDataSet getDataSet(String path) throws IOException, DataSetException { 
 return new FlatXmlDataSet(new File(path)); 
 } 
 
 private IDatabaseConnection getConnection(String driver, 
  String url, String user, String pssword ) throws ClassNotFoundException, 
  SQLException { 
 Class.forName(driver); 
 Connection jdbcConnection = 
  DriverManager.getConnection(url, user, pssword); 
 return new DatabaseConnection(jdbcConnection); 
 } 
} 

上一页  4 5 6 7 8 9 10  下一页

Tags:追求 代码 质量

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接