為每個功能創(chuàng)建一個獨立的模塊,將不同的功能獨立開,盡量與其它的 case 隔離開,這樣其它的 case 就不會被不同的 setup,teardown 方法影響,例如:創(chuàng)建 SearchPage.java。通過 Junit5 的參數(shù)化注解來幫我們實現(xiàn)數(shù)據(jù)的構(gòu)造。
依賴導(dǎo)入
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.4.2</version>
<scope>test</scope>
</dependency>
@ParameterizedTest
@MethodSource("byNameGetPrice")
public void priceTest(String name, String code, double price){
driver.findElement(By.id("com.xueqiu.android:id/home_search")).click();
driver.findElement(By.id("com.xueqiu.android:id/search_input_text")).sendKeys(name);
driver.findElement(By.xpath("http://*[@text='" + code + "'")).click();
System.out.println(driver.findElement(By.xpath("http://*[@text='" + code + "']/../../..//*[@resource-id='com.xueqiu.android:id/current_price']")).getText());
String realPrice = driver.findElement(By.xpath("http://*[@text='\" + code + \"']/../../..//*[@resource-id='com.xueqiu.android:id/current_price']")).getText();
driver.findElement(By.id("com.xueqiu.android:id/aciton_close")).click();
assertThat(parseDouble(realPrice), greaterThan(price));
}
private static Stream<Arguments> byNameGetPrice(){
return Stream.of(Arguments.of("alibaba", "", 210d),
Arguments.of("wangyi", "NTES", 250d),
Arguments.of("baidu", "BAIDU", 180d),
Arguments.of("google", "GOOGL", 200d)
);
}