如何在@AfterClass方法中传递ITestNGMethod作为参数?

时间:2016-09-22 14:50:15

标签: testng

我试图知道在@Test(测试方法)之后,调用了@AfterClass。所以要知道我写了以下代码来做到这一点:

@AfterClass(alwaysRun = true)
  public synchronized void tearDownClass(final ITestNGMethod itx) {

  final Method m = itx.getConstructorOrMethod().getMethod();

  System.out.println(m.getName());

}

但testNG会抛出以下错误: 方法tearDownClass需要1个参数,但@Configuration注释中提供了0。

所以我的问题是如何解决上述问题,或者是否有其他方法来实现这一目标。

提前致谢。

2 个答案:

答案 0 :(得分:2)

这没有意义:它是一个@AfterClass方法,在类的所有测试方法运行后调用。您的特定场景(想要知道调用的最后一个方法)非常具体,因此您应该自己实现它。

例如,您可以创建一个字段lastMethod,并让每个方法都使用其名称对其进行设置,这样当您到达@AfterClass时,您知道哪一个最后运行。

答案 1 :(得分:0)

它无法正常工作,因为def draw_rectangle(t, w): # however you do this ... def draw_rectangle(t, w): # however you do this ... def Draw_USAFlag(t, w): draw_rectangle(t, w) draw_stripes(t, w) 代表一种方法,而一个类可以有很多方法。

您可以注入ITestNGMethod,并在其中查找您的方法。