我使用 JUnit 5 作为我的测试运行程序。
在设置方法中,我硬编码了 3 个参数(platformName
, platformVersion
, and deviceName
)。我有一个测试方法,应该测试各种组合...这意味着,当运行我的testLogin()
测试,它应该在多个平台名称、版本、设备名称上运行...
所以,我尝试如下......
@BeforeEach
@CsvSource({"IOS,13.0,iPhone X Simulator", "IOS,13.2,iPhone Simulator", "IOS,13.3,iPhone XS Simulator"})
void setUp(String platformName, String platformVersion, String deviceName) throws MalformedURLException {
....
capabilities.setCapability("platformName", platformName);
capabilities.setCapability("platformVersion", platformVersion);
capabilities.setCapability("deviceName", deviceName);
capabilities.setCapability("methodName", testInfo.getDisplayName());
}
我的问题是,怎样才能beforeEach()
方法可以参数化吗?另外,我想获取测试方法名称...所以,如果我指定参数,那么我应该在哪里指定 TestInfo 参数。
请帮我。我也看到了下面的问题...
JUnit 5 中的参数化 beforeEach/beforeAll https://stackoverflow.com/questions/51678584/parameterized-beforeeach-beforeall-in-junit-5
========
public class TestBase {
@BeforeEach
void setUp(TestInfo testInfo) throws MalformedURLException {
MutableCapabilities capabilities = new MutableCapabilities();
capabilities.setCapability("platformName", "iOS");
capabilities.setCapability("platformVersion", "13.2");
capabilities.setCapability("deviceName", "iPhone Simulator");
capabilities.setCapability("name", testInfo.getDisplayName());
capabilities.setCapability("app", “/home/my-user/testapp.zip");
driver = new IOSDriver(
new URL("https://192.168.1.4:5566/wd/hub"),
capabilities
);
}
}
public class LoginTest extends TestBase {
@Test
public void testLogin() {
driver.findElement(By.id("user-name")).sendKeys(“myuser);
driver.findElement(By.id("password")).sendKeys(“mypassword);
driver.findElement(By.id(“login_btn”)).click();
assertTrue(true);
}
}