あなたはindex.htmlレポートを変更しようとしていると思います。パネルクラス内のデータはすべてindex.htmlに出力できます。
これを達成するには、3つのファイル(クラス)を変更する必要があります。すべてのクラスはhere
Main.java
TimesPanel.java
です(このクラスは変更したいコンテンツ(パネル)に依存します。目的を説明するために、我々は、レポートの詳細セクションの下倍パネルにコンテンツを追加し、それ故にますTimesPanel.java
)
と
BaseMultiSuitePanel.java
は、プロジェクト内のファイルcustomBaseMultiSuitePanel.java
を作成し、元のファイルの内容をコピーし、それに応じて、コンストラクタへの変更を行います。
customTimesPanel.java
を作成し、内容をTimesPanel.java
にコピーし、private String js(ISuite suite)
メソッドに変更します。これは、レポートの時間をクリックすると、表示されるテーブルにsuccessPercentageと優先度のテストを追加するためです。
public class customTimesPanel extends customBaseMultiSuitePanel {
...
...
private String js(ISuite suite) {
String functionName = "tableData_" + suiteToTag(suite);
StringBuilder result = new StringBuilder(
"suiteTableInitFunctions.push('" + functionName + "');\n"
+ "function " + functionName + "() {\n"
+ "var data = new google.visualization.DataTable();\n"
+ "data.addColumn('number', 'Number');\n"
+ "data.addColumn('string', 'Method');\n"
+ "data.addColumn('string', 'Class');\n"
+ "data.addColumn('number', 'Time (ms)');\n"
+ "data.addColumn('string', 'SuccessPercentage');\n"
+ "data.addColumn('string', 'Priority');\n");
List<ITestResult> allTestResults = getModel().getAllTestResults(suite);
result.append(
"data.addRows(" + allTestResults.size() + ");\n");
Collections.sort(allTestResults, new Comparator<ITestResult>() {
@Override
public int compare(ITestResult o1, ITestResult o2) {
long t1 = o1.getEndMillis() - o1.getStartMillis();
long t2 = o2.getEndMillis() - o2.getStartMillis();
return (int) (t2 - t1);
}
});
int index = 0;
for (ITestResult tr : allTestResults) {
ITestNGMethod m = tr.getMethod();
long time = tr.getEndMillis() - tr.getStartMillis();
result
.append("data.setCell(" + index + ", "
+ "0, " + index + ")\n")
.append("data.setCell(" + index + ", "
+ "1, '" + m.getMethodName() + "')\n")
.append("data.setCell(" + index + ", "
+ "2, '" + m.getTestClass().getName() + "')\n")
.append("data.setCell(" + index + ", "
+ "3, " + time + ")\n")
.append("data.setCell(" + index + ", "
+ "4, '" + m.getSuccessPercentage() + "')\n")
.append("data.setCell(" + index + ", "
+ "5, '" + m.getPriority() + "');\n");
Long total = m_totalTime.get(suite.getName());
if (total == null) {
total = 0L;
}
m_totalTime.put(suite.getName(), total + time);
index++;
...
...
}
次に、customIndexHtmlReport.java
を作成し、このファイルにcontentof Main.java
をコピーします。、
new customTimesPanel(m_model)
はまた、最終的にはこの
Utils.writeUtf8File(m_outputDirectory, "customReport-index.html", xsb, all);
のように、同じファイルでレポート名を変更し、public void generateReport()
方法で以下のような古いTimesPanelオブジェクトと新規を削除するあなたのtestng.xml
<listener class-name = "firsttestngpackage.customIndexHtmlReport" />
にリスナーを追加
あなたは以下のように、各テストの成功率と優先度を追加してカスタムレポートを取得します
![enter image description here](https://i.stack.imgur.com/t9eWL.png)
注:
customIndexHtmlReport.java
にgetClass().getResourceAsStream
方法に関連してくださいリソースが正しく、プロジェクトに配置されていることを確認。私はそれに問題があった。
ありがとうございます。それはかなりうまくいく。 – ArrchanaMohan