当前位置: 首页 > 知识库问答 >
问题:

testng:如何跳过@BeforeMethod调用进行某些测试

卓云
2023-03-14

我正在使用TestNG进行单元测试。我使用@BeforeMethod保存记录,然后执行更新、搜索、删除测试。

我的测试类如下所示:

@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)
    }
}

共有1个答案

郑嘉年
2023-03-14

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

 类似资料:
  • 我正在使用TestNG数据提供程序读取数据池。xls文件,在名为ReadData的类中包含1017个测试用例和214列。 然后,我将214个String参数传递到名为Enterprise Data的单独类中的@Test注释中。 我在@Test中创建了一个for循环,只执行ceratin迭代的操作(比如1-10),它总共只输入10个测试用例。我的问题是,在运行结束时,它仍然显示“Total test

  • 问题内容: 有没有办法限制来自mysqldump命令的某些表? 例如,我将使用以下语法 仅 转储table1和table2: 但是,有没有类似的方法来转储 除 table1和table2 之外的 所有表?我没有在mysqldump文档中找到任何东西,所以暴力破解(指定所有表名)是唯一的方法吗? 问题答案: 您可以使用--ignore- table 选项。所以你可以做 之后没有空格(这不是错字)。

  • 我已经使用selenium创建了测试用例,之前我可以使用maven(从命令行和eclipse)执行我的测试用例。但是现在它不起作用了。请帮助 请在下面找到控制台日志:(运行为- 我没有得到任何错误,它成功地构建了一个项目。但是跳过所有测试用例 请找到我的pom。xml配置如下: 请找到E2E。xml如下:

  • 问题内容: 重新打开笔记本时,我通常必须重新运行笔记本的(大部分)笔记本,以访问先前定义的变量并继续工作。 但是,有时我想跳过一些对后续单元没有影响的单元(例如,它们可能包含已完成的分析分支),并且可能需要很长时间才能运行。这些单元可以分散在整个笔记本电脑中,因此“在下方运行所有设备”将无济于事。 有没有办法做到这一点? 理想情况下,可以为这些单元格添加一些特殊标志,以使其可以手动“运行”,但在“

  • 我正在使用量角器和Jasmine框架编写测试用例。但是,由于我有使用TestNG框架在Java中编写测试用例的背景,我一直在强迫我使用Jasmine中TestNG框架的@beforeMethod和@beforeTest,以及TestNG的Groups属性。在Jasmine框架中有相同的对应项吗?我使用了aftereach和beforeach方法,但它适用于每个description的每个it()函

  • 问题内容: 是否可以跳过/排除某些测试的运行? 我有大量的集成类型测试,这些调用称为标准服务测试编写的rest服务,并使用运行。开发新功能时,有时可以跳过某些测试,例如,如果该新功能尚未部署在测试服务器上,并且我仍想运行所有现有测试(那些进行测试的新测试除外),则有时会有用新功能)。 我知道,但是我不想指定我要运行的所有测试,那将是一长串。同时,我无法编写排除测试的正则表达式。 另一个选择是不提交