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

获取当前在testng中的@BeforeMethod和@AfterMethod中执行的@Test-method-name的名称

晋西岭
2023-03-14

我想使用testng在beforethod和AfterMethod中打印当前正在执行的测试方法的名称。例如:

public class LoginTest {

@Test
public void Test01_LoginPage(){
    //Some Code here
}


@Test
public void Test02_LoginPage(){
    //Some Code Here
}

@BeforeMethod
public void beforeTestCase(){
    //Print Test method name which is going to execute.
}

@AfterMethod
public void AfterTestCase(){
    //Print Test method name which is executed.
}
}

共有3个答案

司徒隐水
2023-03-14

下面的示例解释了如何在before方法和After方法中获取@test方法的方法名和类名

@Test
public void exampleTest(){


}   


@BeforeMethod
        public  void  beforemethod(Method method){
//if you want to get the class name in before method
      String classname = getClass().getSimpleName();
//IF you want to get the method name in the before method 
      String methodName = method.getName() 
//this will return you   exampleTest   
        }

@AfterMethod
        public  void  beforemethod(Method method){
//if you want to get the class name in After method
      String classname = getClass().getSimpleName();
//IF you want to get the method name in the After method 
      String methodName = method.getName()  
//this will return you   exampleTest   

        }
松英喆
2023-03-14

您可以使用像此链接这样的侦听器。链接中的重要代码:-

//这属于IInvokedMethodListener,将在每个方法之前执行,包括在测试之前/之后执行

public void beforeInvocation(IInvokedMethod arg0, ITestResult arg1) {

    String textMsg = "About to begin executing following method : " + returnMethodName(arg0.getTestMethod());

    Reporter.log(textMsg, true);

}

// This belongs to IInvokedMethodListener and will execute after every method including @Before @After @Test

public void afterInvocation(IInvokedMethod arg0, ITestResult arg1) {

    String textMsg = "Completed executing following method : " + returnMethodName(arg0.getTestMethod());

    Reporter.log(textMsg, true);

}

// This will return method names to the calling function

private String returnMethodName(ITestNGMethod method) {

    return method.getRealClass().getSimpleName() + "." + method.getMethodName();

}

商麒
2023-03-14

从文档中:

public class LoginTest {

  @Test
  public void Test01_LoginPage() {
    //Some Code here
  }


  @Test
  public void Test02_LoginPage() {
    //Some Code Here
  }

  @BeforeMethod
  public void beforeTestCase(Method m) {
    System.out.println(m.getName());
  }

  @AfterMethod
  public void AfterTestCase(Method m) {
    System.out.println(m.getName());
  }
}
 类似资料:
  • 问题内容: 在JUnit 3中,我可以这样获得当前正在运行的测试的名称: 它将显示“当前测试是testSomething”。 在JUnit 4中,有什么现成的或简单的方法可以做到这一点吗? 背景:显然,我不想只打印测试的名称。我要加载存储在与测试名称相同的资源中的特定于测试的数据。您知道,约定优于配置以及所有其他内容。 问题答案: JUnit 4.7似乎使用TestName-Rule添加了此功能。

  • 问题内容: 有没有办法获取Java中当前正在执行的方法的名称? 问题答案: 从技术上讲这将起作用… 但是,将在编译时创建一个新的匿名内部类(例如)。因此,这将为.class每个部署此技巧的方法创建一个文件。另外,在运行时每次调用时都会创建一个其他未使用的对象实例。因此,这可能是可以接受的调试技巧,但确实会带来大量开销。 该技巧的一个优点是返回值可用于检索方法的所有其他信息,包括注释和参数名称。这样

  • 问题内容: 我有调用其他脚本文件的脚本,但是我需要获取该进程中当前正在运行的文件的文件路径。 例如,假设我有三个文件。使用: 来电。 调用。 我怎样才能获得的文件名和路径,从内部代码,而无需从传递这些信息作为参数? (执行将返回原始启动脚本的文件路径,而不是当前文件的路径。) 问题答案: p1.py: p2.py:

  • 我正试图为Facebook通知创建绑定。aar库。 然而,我得到了编译错误: 严重性代码说明项目文件行抑制状态错误CS0103名称'CreateAsset'在当前上下文中不存在FBNotificationsC:\users\Jakub\Documents\Visual studio 2015\Projects\FBNotifications\FBNotifications\OBJ\Release\

  • 问题内容: 我正在尝试获取当前正在运行的Python脚本的名称。 我有一个名为的脚本,我想做这样的事情以获得脚本名称: 问题答案: 您可以使用获取当前文件的名称。在主模块中使用时,这是最初调用的脚本的名称。 如果要省略目录部分(可能存在),可以使用。

  • 问题内容: 有没有办法在运行时获取当前包的名称? …且结果应为“主要” 现在我正在使用常量,例如: 但我很好奇您能否避免这种情况 问题答案: 没有提供所需功能的运行时或反射方法或函数。 我能找到的最接近的东西是: 这将输出: 您还可以读取文件的第一行并删除“ package”子字符串。(不确定这是最好的主意)