0
私はTestNGとselenium webdriver javaを使って作業しています。 json形式の出力レポートを作成したいのですが、testngでjson形式のレポートを作成できますか?この問題の例を教えてください。json形式のTestNGレポート結果をカスタマイズする方法
私はTestNGとselenium webdriver javaを使って作業しています。 json形式の出力レポートを作成したいのですが、testngでjson形式のレポートを作成できますか?この問題の例を教えてください。json形式のTestNGレポート結果をカスタマイズする方法
必要な形式でテスト実行レポートを作成する独自のレポーターを作成できます。ここでは、単純なJSONレポーター
package test;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import java.util.Set;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.testng.IReporter;
import org.testng.ISuite;
import org.testng.ITestContext;
import org.testng.ITestResult;
import org.testng.xml.XmlSuite;
public class Reporter implements IReporter {
@SuppressWarnings("unchecked")
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
JSONArray results = new JSONArray();
suites.forEach(element->{
results.add(createSuiteJsonObject(element));
});
try (FileWriter file = new FileWriter(outputDirectory + "/report.json")) {
file.write(results.toJSONString());
} catch (IOException e) {
//handle
}
}
@SuppressWarnings("unchecked")
public JSONObject createSuiteJsonObject(ISuite suite) {
JSONObject result = new JSONObject();
JSONArray passedMethods = new JSONArray();
JSONArray failedMethods = new JSONArray();
JSONArray skippedMethods = new JSONArray();
suite.getResults().entrySet().forEach(element -> {
ITestContext context = element.getValue().getTestContext();
passedMethods.addAll(createResultJsonArray(context.getPassedTests().getAllResults()));
failedMethods.addAll(createResultJsonArray(context.getFailedTests().getAllResults()));
skippedMethods.addAll(createResultJsonArray(context.getSkippedTests().getAllResults()));
});
result.put("name", suite.getName());
result.put("passed", passedMethods);
result.put("failed", failedMethods);
result.put("skipped", skippedMethods);
return result;
}
@SuppressWarnings("unchecked")
public JSONArray createResultJsonArray(Set<ITestResult> results) {
JSONArray result = new JSONArray();
results.forEach(element ->{
JSONObject currentJsonResult = new JSONObject();
currentJsonResult.put("name", element.getName());
result.add(currentJsonResult);
});
return result;
}
}
そして、それ
[
{
"name": "Suite1",
"passed": [
{
"name": "test1"
}
],
"failed": [
{
"name": "test2"
},
{
"name": "test3"
}
],
"skipped": [
{
"name": "test4"
}
]
}
]
によって生成されるレポートの例そんなに私あなたに感謝の一例です試してみる – beginerdeveloper
https://github.com/cbeust/testng/issues/1435 – Grasshopper