TestNG:如何跳过@BeforeMethod调用进行一些测试

时间:2013-12-16 06:43:37

标签: java unit-testing testng

我正在使用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)
    }
}

2 个答案:

答案 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