我正在从整个文件这里复制粘贴代码,然后对其进行更改并实现IReporter
,并在我的java文件中完成了所有必要的导入。除了一个与以下导入相关的错误外,所有错误都消失了:
import org.testng.internal.Utils;
错误是
The method longStackTrace(Throwable, boolean) is undefined for the type Utils
The method shortStackTrace(Throwable, boolean) is undefined for the type Utils
这两个是定义的,我可以看到它是这里和这里。我试着清理这个项目,重新启动eclipse,但是什么都没成功。在pom.xml
中
<testng.version>6.10</testng.version>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>${testng.version}</version>
<scope>test</scope>
<scope>compile</scope> //tried this also
</dependency>
下面是这个班
package firsttestngpackage;
import java.util.Map;
//import org.apache.xml.serializer.utils.Utils;
import org.testng.IReporter;
import org.testng.ISuite;
import org.testng.ISuiteResult;
import org.testng.reporters.TestHTMLReporter;
import org.testng.xml.XmlSuite;
import org.testng.ITestContext;
import org.testng.ITestNGMethod;
import org.testng.ITestResult;
import org.testng.Reporter;
import org.testng.TestListenerAdapter;
import org.testng.TestRunner;
import org.testng.internal.Utils;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Objects;
public class CustomReport implements IReporter {
@Override
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites,
String outputDirectory) {
}
public static void generateTable(PrintWriter pw, String title,
Collection<ITestResult> tests, String cssClass, Comparator<ITestResult> comparator)
{
pw.append("<table width='100%' border='1' class='invocation-").append(cssClass).append("'>\n")
.append("<tr><td colspan='4' align='center'><b>").append(title).append("</b></td></tr>\n")
.append("<tr>")
.append("<td><b>Test method</b></td>\n")
.append("<td width=\"30%\"><b>Exception</b></td>\n")
.append("<td width=\"10%\"><b>Time (seconds)</b></td>\n")
.append("<td><b>Instance</b></td>\n")
.append("</tr>\n");
if (tests instanceof List) {
Collections.sort((List<ITestResult>) tests, comparator);
}
// User output?
String id;
Throwable tw;
for (ITestResult tr : tests) {
pw.append("<tr>\n");
// Test method
ITestNGMethod method = tr.getMethod();
String name = method.getMethodName();
pw.append("<td title='").append(tr.getTestClass().getName()).append(".")
.append(name)
.append("()'>")
.append("<b>").append(name).append("</b>");
// Test class
String testClass = tr.getTestClass().getName();
if (testClass != null) {
pw.append("<br>").append("Test class: ").append(testClass);
// Test name
String testName = tr.getTestName();
if (testName != null) {
pw.append(" (").append(testName).append(")");
}
}
// Method description
if (! Utils.isStringEmpty(method.getDescription())) {
pw.append("<br>").append("Test method: ").append(method.getDescription());
}
Object[] parameters = tr.getParameters();
if (parameters != null && parameters.length > 0) {
pw.append("<br>Parameters: ");
for (int j = 0; j < parameters.length; j++) {
if (j > 0) {
pw.append(", ");
}
pw.append(parameters[j] == null ? "null" : parameters[j].toString());
}
}
//
// Output from the method, created by the user calling Reporter.log()
//
{
List<String> output = Reporter.getOutput(tr);
if (null != output && output.size() > 0) {
pw.append("<br/>");
// Method name
String divId = "Output-" + tr.hashCode();
pw.append("\n<a href=\"#").append(divId).append("\"")
.append(" onClick='toggleBox(\"").append(divId).append("\", this, \"Show output\", \"Hide output\");'>")
.append("Show output</a>\n")
.append("\n<a href=\"#").append(divId).append("\"")
.append(" onClick=\"toggleAllBoxes();\">Show all outputs</a>\n")
;
// Method output
pw.append("<div class='log' id=\"").append(divId).append("\">\n");
for (String s : output) {
pw.append(s).append("<br/>\n");
}
pw.append("</div>\n");
}
}
pw.append("</td>\n");
// Exception
tw = tr.getThrowable();
String stackTrace;
String fullStackTrace;
id = "stack-trace" + tr.hashCode();
pw.append("<td>");
if (null != tw) {
fullStackTrace = Utils.longStackTrace(tw, true);
stackTrace = "<div><pre>" + Utils.shortStackTrace(tw, true) + "</pre></div>";
pw.append(stackTrace);
// JavaScript link
pw.append("<a href='#' onClick='toggleBox(\"")
.append(id).append("\", this, \"Click to show all stack frames\", \"Click to hide stack frames\")'>")
.append("Click to show all stack frames").append("</a>\n")
.append("<div class='stack-trace' id='").append(id).append("'>")
.append("<pre>").append(fullStackTrace).append("</pre>")
.append("</div>")
;
}
pw.append("</td>\n");
// Time
long time = (tr.getEndMillis() - tr.getStartMillis()) / 1000;
String strTime = Long.toString(time);
pw.append("<td>").append(strTime).append("</td>\n");
// Instance
Object instance = tr.getInstance();
pw.append("<td>").append(Objects.toString(instance)).append("</td>");
pw.append("</tr>\n");
}
pw.append("</table><p>\n");
}
}
发布于 2017-11-27 12:10:10
按照上述意见中的建议
通过eclipse更新testNG插件->检查是否更新->然后选择testNG并进行更新,解决了错误
https://stackoverflow.com/questions/47420282
复制相似问题