我正在使用TestNG进行单元测试。我正在使用 @BeforeMethod 保存记录,然后执行更新,搜索,删除测试。
我正在寻找可以避免对某些测试用例执行 @BeforeMethod 方法调用的选项。例如,我有三个测试保存,更新和删除。在这种情况下,我只想调用 @BeforeMethod 进行更新和删除测试而不是进行保存测试。有什么想法吗?
请注意,我不想使用 @DependesOnMethods ,因为不建议这样做。
提前致谢。
我的测试类如下所示:
@ContextConfiguration("file:application-context-test.xml")
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
public class MyEntityTest {
int long myEntityId;
@BeforeMethod
public saveRecord(){
session=getCurrentSessionFactory()
myEntity = new myEntity();
myEntityId = session.save(myEntity)
}
@Test
public saveTest(){
session=getCurrentSession()
myEntity =session.getByID(myEntityId)
session.save(myEntity)
}
@Test
public updateTest(){
session=getCurrentSession()
myEntity =session.getByID(myEntityId)
session.update(myEntity)
}
}
答案 0 :(得分:2)
TestNG支持一些参数的本机注入,例如有关要调用的方法的信息。所以你可以使用以下方法:
import java.lang.reflect.Method;
...
@BeforeMethod
public saveRecord(Method method){
if (!method.getName().equals("saveTest")) {
session=getCurrentSessionFactory()
myEntity = new myEntity();
myEntityId = session.save(myEntity)
}
}
http://testng.org/doc/documentation-main.html#native-dependency-injection
答案 1 :(得分:1)
你可以在测试组中为不同的组调用一个单独的beforeMethod http://testng.org/doc/documentation-main.html#test-groups