gpt4 book ai didi

java - 取决于方法和@Factory

转载 作者:行者123 更新时间:2023-12-01 04:35:39 27 4
gpt4 key购买 nike

我被难住了。我已经阅读了很多在线帖子,但似乎找不到我正在寻找的解决方案。

我想要的是在循环中并行运行测试,这样一个测试生成数据,另一个测试消耗数据。

我发现传入的 ITestContext 对于在测试之间存储测试数据很有用。但是,当使用dependsOnMethod时,所有数据生成测试都会在第一个依赖方法运行之前运行。

有没有办法指定@Factory和@DataProvider的组合来实现我想要的?

public class DependencyTest1 {
private String value;

@DataProvider()
public static Object[][] DependencyTestProvider() {
return new Object[][] {
// Data passed into tests
{ "String1" },
{ "String2" },
};
}

@Factory(dataProvider = "DependencyTestProvider")
public DependencyTest1(String value) {

System.out.println("DataDependencyTest1 Constructor");
System.out.println("String: " + value);

this.value = value;

}

//*****************************************************************************
//*****************************************************************************
@Test(description = "Test Dependency Injection: Generate Test Data", groups = "unit")
public void Test_DependencyInjection_GenerateTestData(ITestContext context, Method method) throws Exception {

System.out.println("Test Name: " + method.getName());
System.out.println("Create Test Data");
System.out.println("String: " + value);
System.out.println("Add data to current test context");

context.setAttribute("value", value);
}

//*****************************************************************************
//*****************************************************************************
@Test(description = "Test Dependency Injection: Extract Test Data",groups = "unit", dependsOnMethods = "Test_DependencyInjection_GenerateTestData")
public void Test_DependencyInjection_ExtractData(ITestContext context, Method method) {

System.out.println("Test Name: " + method.getName());
System.out.println("Extract data from test context");

String value = (String) context.getAttribute("value");

System.out.println("String: " + value);

}
}

测试输出:

DataDependencyTest1 Constructor

String: Default test name

DataDependencyTest1 Constructor

String: String1

DataDependencyTest1 Constructor

String: String2

Test Name: Test_DependencyInjection_GenerateTestData

Create Create Test Data

String: String1

Add data to current test context

Test Name: Test_DependencyInjection_GenerateTestData

Create Create Test Data

String: String2

Add data to current test context

Test Name: Test_DependencyInjection_ExtractData

Extract data from test context

String: String2

Test Name: Test_DependencyInjection_ExtractData

Extract data from test context

String: String2

现在问题来了...

每次运行 _GenerateTestData() 测试方法时,测试都会运行 _ExtractData()。但是,依赖性测试似乎只在循环的最后一次迭代上运行。

如何制作这样的测试序列:

Test_DependencyInjection_GenerateTestData -- using "String1"

Test_DependencyInjection_ExtractData -- using "String1"

Test_DependencyInjection_GenerateTestData -- using "String2"

Test_DependencyInjection_ExtractData -- using "String2"

最佳答案

将测试添加到单独的组中并将按实例分组设置为 true。这应该可以解决问题。

关于java - 取决于方法和@Factory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17409483/

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