- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我们如何使用Selenium-Jupiter's @TestTemplate
(让它在不同的浏览器上运行: https://bonigarcia.github.io/selenium-jupiter/#template-tests )将其与 @ParameterizedTest
结合起来(对于数据驱动的测试,例如尝试在源中、登录页面上定义的不同凭据)?
我一直没能弄清楚。而不是能够使用Selenium-Jupiter's @TestTemplate
以编程方式配置浏览器场景( seleniumExtension.addBrowsers
并使用 Webdriver
作为方法 templateTest
的参数类型),其中该方法将执行两次(一次使用 Chrome,第二次使用 Firefox),我只能使其与两个 @ParameterizedTest
一起使用。方法:
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.aggregator.ArgumentsAccessor;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.extension.RegisterExtension;
import static org.junit.jupiter.params.provider.Arguments.arguments;
import io.github.bonigarcia.SeleniumExtension;
public class TestDDTparamNoTestTemplate {
@RegisterExtension
static SeleniumExtension seleniumExtension = new SeleniumExtension();
@BeforeAll
static void setup() {
//to stop geckodriver logging: (this is for firefox, not for firefoxInDocker)
System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE,"/dev/null");
}
//methodsource with factory method that must generate a stream of arguments:
static Stream<Arguments> purposeEmailPasswordNameProvider() {
return Stream.of(
arguments("Login works", "alexsiminiuc3@gmail.com", "Password123!", "Alex"),
arguments("Incorrect email", "alexsiminiuc2@gmail.com", "Password123!", "Alex"),
arguments("Invalid email", "alexsiminiuc", "Password123!", "Alex")
);
}
//CHROME
@ParameterizedTest
@MethodSource("purposeEmailPasswordNameProvider") // I could also use a @CsvSource or a @CsvFileSource
void testArgumentAggregMethodSourceChrome(ArgumentsAccessor arguments,ChromeDriver driver) {
String purpose = arguments.getString(0);
System.out.println("purpose is: " + purpose);
User user = new User(arguments.getString(1),
arguments.getString(2),
arguments.getString(3));
testCASE(driver, user, purpose);
}
//FIREFOX
@ParameterizedTest
@MethodSource("purposeEmailPasswordNameProvider")
void testArgumentAggregMethodSourceFirefox(ArgumentsAccessor arguments,FirefoxDriver driver) {
String purpose = arguments.getString(0);
System.out.println("purpose is: " + purpose);
User user = new User(arguments.getString(1),
arguments.getString(2),
arguments.getString(3));
testCASE(driver, user, purpose);
}
void testCASE(WebDriver driver, User user, String purpose){
HomePage homePage = new HomePage(driver);
homePage.open();
if (purpose.equals("Login works")) {
etc.
最佳答案
我认为@TestTemplate
和@ParameterizedTest
不能在JUnit 5中组合。因此,它也不能在Selenium-Jupiter中使用。
关于java - 将@TestTemplate 与@ParameterizedTest 结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53005926/
我有一个测试,我想在其中传递三个参数: 字符串 枚举 字符串数组 例子: @ParameterizedTest @CsvSource({ "/path/to/first
我无法从之前提出的问题中找到错误的原因,因为它们与“@Test”(不允许自定义数据类型)有关。 我有一个程序,它接受字符串类型输入(通常是文本 block ),并以列表的形式返回输入的句子。为了正确测
我正在尝试在 JUnit 5 中开发参数化测试,如下例所示。 @ParameterizedTest @ArgumentsSource(ArgClassProvider.class) void test
我们如何使用Selenium-Jupiter's @TestTemplate (让它在不同的浏览器上运行: https://bonigarcia.github.io/selenium-jupiter/
当您使用 Eclipse TestRunner 运行 JUnit 4 ParameterizedTest 时,图形表示相当笨拙:对于每个测试,您都有一个名为 [0]、[1] 等是否可以给测试 [0]、
我发现 Junit 5 从 5.3 版开始支持并行性,但我没有找到任何关于如何使用 csv 源运行并行测试的引用资料。你有什么建议吗? 最佳答案 或者,您可以创建具有相同内容的 src/test/re
这是 JUnit 中的参数化测试: @ParameterizedTest @ValueSource(strings = {"Username", "User123", "Another use
考虑这个片段: @ParameterizedTest @ValueSource(strings = {"a", "b", "c"}) void test(final String line) {
我试图将来自JUnit4的参数化运行器的概念与JUnit5参数化测试结合起来。本质上,我想在同一组数据上测试两个单独的函数。 我知道我可以将函数作为另一个参数添加到参数化测试本身,但是我试图使更改或添
我有一堆 @ParameterizedTest 从 @MethodSource 接收参数,toString() 结果非常冗长(例如 Selenium 的 网络驱动程序)。这些默认用于组成相应的显示名称
我是 JUnit 测试的新手,我想在 IntelliJ IDEA 2017.3.3 中创建参数化测试。所以我添加了 JUnit 5: 然后 IntelliJ 下载 org.junit.jupiter:
我有使用 TestNG 的单元测试,我尝试转移到 JUnit Jupiter (JUnit 5),我想知道哪种方法最好: 测试NG : @DataProvider public Object[][]
我正在尝试借助带有 JUnit 5 的 FizzBuzz 应用程序来理解 JUnit 5。下面是测试用例之一 @DisplayName("Test for multiples of 5")
我有一个如下所示的 JUnit 4 测试,我正在尝试将 JUnit 升级到 JUnit 5。我做了一些关于如何将 JUnit 4 测试迁移到 JUnit 5 的研究,但找不到任何关于如何迁移以下案例的
目前,我正在(尝试)将现有的 Junit4 项目迁移到 Junit5。 我被困在必须同时使用@RepeatedTest 和@ParameterizedTest 的地方。尝试这样做会引发默认异常 - N
我在尝试使用 JUnit 5 的参数化功能时偶然发现了一个初始化错误。 @ExtendWith(MockitoExtension.class) @RunWith(Parameterized.class
我正在创建一个排序算法库。每个类都有相同的方法: public static > void sort(T[] array) 我会让所有类都实现一个接口(interface)或扩展一个抽象类,但 sor
我是一名优秀的程序员,十分优秀!