0
有沒有辦法從不通過xml文件執行時獲取腳本從@BeforeSuite註釋中啓動的類的名稱?在@BeforeSuite註解中獲取類名稱 - TestNG - Java
這樣做:
reportName = new Exception().getStackTrace()[0].getClassName();
返回包含@BeforeSuite註釋和這個類本身:
reportName = new Exception().getStackTrace()[1].getClassName();
回報sun.reflect.NativeMethodAccessorlmpl
如果我直接執行腳本從一個單獨的課程中,我想獲取該信息,因爲我正在使用它來命名我的Extent報告文件名。
如果你想知道的@BeforeSuite註釋內部的代碼如下所示:
// Set Extent Report file name from the global properties file
String reportName = ctx.getCurrentXmlTest().getSuite().getName();
if (reportName.equals("Default suite"))
{
reportName = new Exception().getStackTrace()[0].getClassName();
}
String timeStamp = new SimpleDateFormat("HH.mm.ss").format(new Date());
// Initialize Extent Reports and modify the looks/output
String extentReportPath = "";
if (extent == null) {
if (os.equals("Mac"))
{
extentReportPath = reportPath + "/" + project + "-" + reportName + "-" + environment + "-" + browser + "-" + timeStamp + ".html";
}
else if (os.equals("Windows"))
{
extentReportPath = reportPath + "\\" + project + "-" + reportName + "-" + environment + "-" + browser + "-" + timeStamp + ".html";
}
// Start new report
extent = new ExtentReports(extentReportPath, true);
}
還有更多的它,但這是我的問題的部分相關。
--- UPDATE ---
這是我的解決方案:
// Set Extent Report file name from the global properties file
String reportName = ctx.getCurrentXmlTest().getSuite().getName();
if (reportName.equals("Default suite"))
{
List<ITestNGMethod> allMethods = ctx.getSuite().getAllMethods();
for (ITestNGMethod method : allMethods)
{
String fullMethod = method.toString();
int indexOf = fullMethod.indexOf(".");
reportName = fullMethod.replace(fullMethod.substring(indexOf), ""); }
}
我可能已經把它複雜化了,但至少指出了我需要去的地方。我的解決方案在我的問題的底部。 –