比方说,我有这些方法如何防止的方法被称为不止一次
public class AuthProvider {
protected AWSCredentials obtainAuth() {
AWSCredentials credentials = new BasicAWSCredentials("key1", "");
return credentials;
}
}
public class Uploader extends AuthProvider {
public void uploadFile() {
obtainAuth();
//code to upload file
}
}
然后,我有我的TestNg
测试类,如下
public class T1 {
@Test
public void runTest1() {
Uploader uploader = new Uploader();
uploader.uploadFile();
}
}
public class T2 {
@Test
public void runTest1() {
Uploader uploader = new Uploader();
uploader.uploadFile();
}
}
现在,如果我跑T1
和T2
作为测试套件的一部分,它将运行obtainAuth()
方法两次(一次在T1
和一次在T2
)。由于我将两个测试作为同一个套件的一部分运行,因此它应该只运行obtainAuth()
方法并以static
的方式存储返回的值AWSCredentials
。
我试图通过在Uploader
类中声明静态类级别字段以static
的方式实例化obtainAuth()
。但它没有奏效。
Depends中在测试框架中,但它们通常具有setUp()方法,该方法在套件中的第一个测试之前运行,而在suite中的最后一个测试之后运行tearDown()方法。尝试在你的测试框架的文档中查找setup/teardown。 – Ma3x
我在'beforeSuite()'中加入了它。有用。但我想用其他方式解决它? –
当然,如果你想在应用程序中防止多次调用,你可以在应用程序代码中解决这个问题。 – Ma3x