有没有把优先级上一个@Factory
法的方式进行?我试过@AfterMethod
,@AfterTest
和@AfterClass
,所有的结果在我的工厂方法与@BeforeClass
标签我建立呼叫后立即运行。TestNG的@Factory优先
我的代码是与此类似:
@BeforeClass
public void setup() {
}
@Test()
public void method1() throws Exception {
}
@Test(dependsOnMethods = "method1")
public void method2() {
}
@Test(dependsOnMethods = "method2")
public void method3() throws Exception {
}
@Test(dependsOnMethods = "method3")
public void method4() throws Exception {
}
@Test(dependsOnMethods = "method4")
public void method5() throws Exception {
}
@AfterClass
@Factory
public Object[] factory() {
Object[] values = new Object[10];
for (int i = 0; i < values.length; i++) {
values[i] = new validationFactory(map.get(i).x, map.get(i).y);
}
return values;
}
什么代码正在做的是深入到了一个API,检索所有请求的数据,切片数据成一个map
,然后通过该地图数据进入工厂方法以验证它。问题是,在我的设置方法运行后,工厂立即启动并验证空映射。有没有办法让工厂方法等待数据准备好?
您的解决方案在我设置的小规模测试中完美工作,但您将如何扩大Object []的大小?因为它需要动态调整大小,因为我找回的数据可能是1或10,000个条目。至于依赖关系,如果您有关于如何改进它们的提示,那将不胜感激。现在,我不希望验证方法在有任何数据需要验证之前运行,并且我不希望在API向我发送文件/数据之前运行我的文件处理测试。 – user2434692
我的解决方案是基于你的例子,其中'values'的大小是已知的。正如我告诉你的,动态测试可以在其余完成后运行,但它们必须在开始时初始化。使用最后运行的测试方法或'@ AfterClass'方法进行验证。在这种情况下工厂将无法工作。 – vempo
感谢您的答案,我想我可以解决数组长度问题。 – user2434692