TestNG - @BeforeMethod用于特定方法

use*_*523 5 java testng spring spring-test

我正在使用带有TestNG的Spring Test来测试我们的DAO,我想在某些方法之前运行一个特定的文本夹具脚本,允许在每个方法之后回滚修改,以便测试可以对夹具数据做任何事情. .

最初我认为'群组'适合它,但我已经意识到它们不适合它(参见这个问题:TestNG BeforeMethod with groups).

有没有办法配置一个@BeforeMethod方法只在特定的@Tests 之前运行?我看到的唯一方法是解决方法:

  • 定义一个普通的设置方法并在每个@Test方法的开头调用;
  • @BeforeMethod方法移动到新类(顶级或内部类)以及依赖于它的所有方法.

两者都不理想,我想让我的测试自然分组和清洁,而不是由于缺乏替代品而分裂.

jab*_*cky 10

您可以使用"java.lang.reflect.Method"类型添加@BeforeMethod参数.然后,TestNG将为当前测试方法注入反射信息,包括可用于切换的方法名称.

如果添加另一个'Object'参数,您还将获得测试方法的调用参数.

您可以在TestNG文档的第5.18.1章中找到所有可能的TestNG注释方法参数.


Nic*_*ich 3

测试根本不是为了做到这一点而设计的。从技术上讲,单个测试应该能够处理自身的幂等性,这意味着它可以设置、测试和删除。这是一个单一的测试。然而,许多测试有时具有相同的设置和拆卸方法,而其他测试则需要一次设置才能全部运行。这就是类型标签的目的@Before。\n如果您不喜欢在测试中进行设置和拆卸,那么更欢迎您构建自己的系统,但从技术上讲,如果某些方法需要特定的设置或拆解,那么这确实应该体现在测试中,因为这是测试通过的要求。调用设置方法是可以的,但最终,显然测试需要特定的设置才能通过。毕竟,如果您使用特定的设置,那么您实际上是在测试状态而不是代码吗?

\n