Java 是否可以从被调用的方法中写入testng测试的名称?
我正在使用Java(TestNG和IntelliJ)运行Selenium测试,目前正在开发我的报告框架。 我的测试设置如下所示:Java 是否可以从被调用的方法中写入testng测试的名称?,java,selenium,Java,Selenium,我正在使用Java(TestNG和IntelliJ)运行Selenium测试,目前正在开发我的报告框架。 我的测试设置如下所示: @Test public void testLogin(){ myKeyword.login(); } myKeyword是我创建的一类关键字,带有一个名为login的方法。login关键字将如下所示: public void login(){ myPage.typeInTextBox("Username"); myPage.typeInTextBox(
@Test
public void testLogin(){
myKeyword.login();
}
myKeyword是我创建的一类关键字,带有一个名为login的方法。login关键字将如下所示:
public void login(){
myPage.typeInTextBox("Username");
myPage.typeInTextBox("Password");
myPage.buttonClick("Login");
}
我的验证内置于方法“buttonClick”和“typeInTextBox”中。它们看起来像:
try{
driver.findelement(By.id("myButton")).click();
}
catch (Exception e){
Assert.fail("Could not click on the button.");
}
我想知道的是,“buttonClick”方法是否可能知道调用它的测试的名称
我想用我自己的函数替换“Assert.fail…”,该函数将创建一个文本文件,我将使用该文件记录我想要的信息,其中需要包括失败的测试的名称(在本例中为“testLogin”).一个选项是在某个地方设置当前测试的名称,可能是一个静态变量
来自您的异常的stacktrace?我没有异常。这只是我代码中的一个片段,我仍在试图找出如何将测试名称传递给方法“buttonClick”。非常感谢,我刚才看到的是来自Dmitri的相同问题和答案。您的解决方案正是我想要的。
public class Test {
@BeforeMethod
public void handleTestMethodName(java.lang.reflect.Method method) {
GlobalVariables.currentTestName = method.getName();
}
...
}