gpt4 book ai didi

testing - Geb JUnit4 自动生成的测试

转载 作者:行者123 更新时间:2023-11-28 21:27:23 26 4
gpt4 key购买 nike

是否可以生成测试并运行它们?

例如,我有我想检查它们是否指向 404 页面和一些其他测试的 URL 列表。我不想为每个链接创建一个单独的测试。这将需要大量工作。

如果不可能,是否可以从一个测试指向另一个测试,如果另一个测试失败,第一个测试就继续进行?

对于我的测试,我将 Groovy 与 Gebish、Gradle 和 JUnit4 结合使用。

最佳答案

我想你要找的是parameterized测试,而不是生成的测试。如果我理解正确的话,您想对许多不同的“事物”运行相同测试。

在参数化测试中,您通过声明一个返回数据的静态方法然后告诉 JUnit 使用 Parameterized runner 来运行测试来做到这一点。然后每个测试类都使用一个参数作为测试数据进行实例化,测试方法可以访问该参数。

@RunWith(Parameterized.class)
public class FibonacciTest {
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 }
});
}

private int fInput;
private int fExpected;

public FibonacciTest(int input, int expected) {
fInput= input;
fExpected= expected;
}

@Test
public void test() {
assertEquals(fExpected, Fibonacci.compute(fInput));
}
}

另一种方法是 theories .根据理论,您将测试数据作为用 @Datapoint 注释的不同静态字段嵌入到测试类中,并且为每个数据点重复调用每个测试方法,并将特定数据点作为参数传递。同样,你有一个特殊的运行者来实现它......

@RunWith(Theories.class)
public class UserTest {
@DataPoint
public static String GOOD_USERNAME = "optimus";
@DataPoint
public static String USERNAME_WITH_SLASH = "optimus/prime";

@Theory
public void filenameIncludesUsername(String username) {
assumeThat(username, not(containsString("/")));
assertThat(new User(username).configFileName(), containsString(username));
}
}

关于testing - Geb JUnit4 自动生成的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36202355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com