比方說,我有這些方法如何防止的方法被稱爲不止一次
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