Added depends-on-methods and depends-on-groups attributes to test-method in XML report
diff --git a/src/main/org/testng/internal/Utils.java b/src/main/org/testng/internal/Utils.java
index 5ce20c8..3dc210e 100644
--- a/src/main/org/testng/internal/Utils.java
+++ b/src/main/org/testng/internal/Utils.java
@@ -771,4 +771,17 @@
return buf.append(fqn ? method.toString() : method.getMethodName()).toString();
}
+
+ public static String arrayToString(String[] strings) {
+ String result = "";
+ if ((strings != null) && (strings.length > 0)) {
+ for (int i = 0; i < strings.length; i++) {
+ result += strings[i];
+ if (i < strings.length - 1) {
+ result += ", ";
+ }
+ }
+ }
+ return result;
+ }
}
diff --git a/src/main/org/testng/reporters/XMLReporter.java b/src/main/org/testng/reporters/XMLReporter.java
index 6335a48..019db2b 100644
--- a/src/main/org/testng/reporters/XMLReporter.java
+++ b/src/main/org/testng/reporters/XMLReporter.java
@@ -168,4 +168,20 @@
public void setTimestampFormat(String timestampFormat) {
config.setTimestampFormat(timestampFormat);
}
+
+ public boolean isGenerateDependsOnMethods() {
+ return config.isGenerateDependsOnMethods();
+ }
+
+ public void setGenerateDependsOnMethods(boolean generateDependsOnMethods) {
+ config.setGenerateDependsOnMethods(generateDependsOnMethods);
+ }
+
+ public void setGenerateDependsOnGroups(boolean generateDependsOnGroups) {
+ config.setGenerateDependsOnGroups(generateDependsOnGroups);
+ }
+
+ public boolean isGenerateDependsOnGroups() {
+ return config.isGenerateDependsOnGroups();
+ }
}
diff --git a/src/main/org/testng/reporters/XMLReporterConfig.java b/src/main/org/testng/reporters/XMLReporterConfig.java
index d87b052..3a83f56 100644
--- a/src/main/org/testng/reporters/XMLReporterConfig.java
+++ b/src/main/org/testng/reporters/XMLReporterConfig.java
@@ -4,6 +4,46 @@
* @author Hani Suleiman Date: Mar 27, 2007 Time: 9:16:28 AM
*/
public class XMLReporterConfig {
+
+ public static final String TAG_TEST = "test";
+ public static final String TAG_TEST_METHOD = "test-method";
+ public static final String TAG_EXCEPTION = "exception";
+ public static final String TAG_MESSAGE = "message";
+ public static final String TAG_SHORT_STACKTRACE = "short-stacktrace";
+ public static final String TAG_FULL_STACKTRACE = "full-stacktrace";
+ public static final String TAG_TESTNG_RESULTS = "testng-results";
+ public static final String TAG_SUITE = "suite";
+ public static final String TAG_GROUPS = "groups";
+ public static final String TAG_GROUP = "group";
+ public static final String TAG_CLASS = "class";
+ public static final String TAG_METHOD = "method";
+ public static final String TAG_PARAMS = "params";
+ public static final String TAG_PARAM = "param";
+ public static final String TAG_PARAM_VALUE = "value";
+ public static final String TAG_REPORTER_OUTPUT = "reporter-output";
+ public static final String TAG_LINE = "line";
+
+ public static final String ATTR_URL = "url";
+ public static final String ATTR_NAME = "name";
+ public static final String ATTR_STATUS = "status";
+ public static final String ATTR_DESC = "description";
+ public static final String ATTR_METHOD_SIG = "signature";
+ public static final String ATTR_GROUPS = "groups";
+ public static final String ATTR_CLASS = "class";
+ public static final String ATTR_INDEX = "index";
+ public static final String ATTR_IS_NULL = "is-null";
+ public static final String ATTR_PACKAGE = "package";
+ public static final String ATTR_STARTED_AT = "started-at";
+ public static final String ATTR_FINISHED_AT = "finished-at";
+ public static final String ATTR_DURATION_MS = "duration-ms";
+ public static final String ATTR_IS_CONFIG = "is-config";
+ public static final String ATTR_DEPENDS_ON_METHODS = "depends-on-methods";
+ public static final String ATTR_DEPENDS_ON_GROUPS = "depends-on-groups";
+
+ public static final String TEST_PASSED = "PASS";
+ public static final String TEST_FAILED = "FAIL";
+ public static final String TEST_SKIPPED = "SKIP";
+
/**
* Indicates that no file fragmentation should be performed. This value indicates the XML generator to write all the
* results in one big file. Not recommended for large test suites.
@@ -38,43 +78,6 @@
*/
public static final int STACKTRACE_BOTH = 3;
- public static final String TAG_TEST = "test";
- public static final String TAG_TEST_METHOD = "test-method";
- public static final String TAG_EXCEPTION = "exception";
- public static final String TAG_MESSAGE = "message";
- public static final String TAG_SHORT_STACKTRACE = "short-stacktrace";
- public static final String TAG_FULL_STACKTRACE = "full-stacktrace";
- public static final String TAG_TESTNG_RESULTS = "testng-results";
- public static final String TAG_SUITE = "suite";
- public static final String TAG_GROUPS = "groups";
- public static final String TAG_GROUP = "group";
- public static final String TAG_CLASS = "class";
- public static final String TAG_METHOD = "method";
- public static final String TAG_PARAMS = "params";
- public static final String TAG_PARAM = "param";
- public static final String TAG_PARAM_VALUE = "value";
- public static final String TAG_REPORTER_OUTPUT = "reporter-output";
- public static final String TAG_LINE = "line";
-
- public static final String ATTR_URL = "url";
- public static final String ATTR_NAME = "name";
- public static final String ATTR_STATUS = "status";
- public static final String ATTR_DESC = "description";
- public static final String ATTR_METHOD_SIG = "signature";
- public static final String ATTR_GROUPS = "groups";
- public static final String ATTR_CLASS = "class";
- public static final String ATTR_INDEX = "index";
- public static final String ATTR_IS_NULL = "is-null";
- public static final String ATTR_PACKAGE = "package";
- public static final String ATTR_STARTED_AT = "started-at";
- public static final String ATTR_FINISHED_AT = "finished-at";
- public static final String ATTR_DURATION_MS = "duration-ms";
- public static final String ATTR_IS_CONFIG = "is-config";
-
- public static final String TEST_PASSED = "PASS";
- public static final String TEST_FAILED = "FAIL";
- public static final String TEST_SKIPPED = "SKIP";
-
//note: We're hardcoding the 'Z' because Java doesn't support all the intricacies of ISO-8601.
static final String FMT_DEFAULT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
@@ -110,6 +113,18 @@
private boolean splitClassAndPackageNames = false;
/**
+ * Indicates whether the <code>depends-on-methods</code> attribute should be generated for a <code>test-method</code>
+ * element
+ */
+ private boolean generateDependsOnMethods = true;
+
+ /**
+ * Indicates whether the <code>depends-on-groups</code> attribute should be generated for a <code>test-method</code>
+ * element
+ */
+ private boolean generateDependsOnGroups = true;
+
+ /**
* The output format for timestamps
*/
private String timestampFormat = FMT_DEFAULT;
@@ -161,4 +176,20 @@
public void setTimestampFormat(String timestampFormat) {
this.timestampFormat = timestampFormat;
}
+
+ public boolean isGenerateDependsOnMethods() {
+ return generateDependsOnMethods;
+ }
+
+ public void setGenerateDependsOnMethods(boolean generateDependsOnMethods) {
+ this.generateDependsOnMethods = generateDependsOnMethods;
+ }
+
+ public boolean isGenerateDependsOnGroups() {
+ return generateDependsOnGroups;
+ }
+
+ public void setGenerateDependsOnGroups(boolean generateDependsOnGroups) {
+ this.generateDependsOnGroups = generateDependsOnGroups;
+ }
}
diff --git a/src/main/org/testng/reporters/XMLSuiteResultWriter.java b/src/main/org/testng/reporters/XMLSuiteResultWriter.java
index a22aec0..e9e3557 100644
--- a/src/main/org/testng/reporters/XMLSuiteResultWriter.java
+++ b/src/main/org/testng/reporters/XMLSuiteResultWriter.java
@@ -152,7 +152,6 @@
attributes.setProperty(XMLReporterConfig.ATTR_METHOD_SIG, removeClassName(testResult.getMethod().toString()));
- //TODO: Cosmin - not finished
SimpleDateFormat format = new SimpleDateFormat(config.getTimestampFormat());
String startTime = format.format(testResult.getStartMillis());
String endTime = format.format(testResult.getEndMillis());
@@ -163,11 +162,26 @@
attributes.setProperty(XMLReporterConfig.ATTR_DURATION_MS, strDuration);
if (config.isGenerateGroupsAttribute()) {
- String groupNamesStr = getGroupNamesString(testResult);
+ String groupNamesStr = Utils.arrayToString(testResult.getMethod().getGroups());
if (!Utils.isStringEmpty(groupNamesStr)) {
attributes.setProperty(XMLReporterConfig.ATTR_GROUPS, groupNamesStr);
}
}
+
+ if (config.isGenerateDependsOnMethods()) {
+ String dependsOnStr = Utils.arrayToString(testResult.getMethod().getMethodsDependedUpon());
+ if (!Utils.isStringEmpty(dependsOnStr)) {
+ attributes.setProperty(XMLReporterConfig.ATTR_DEPENDS_ON_METHODS, dependsOnStr);
+ }
+ }
+
+ if (config.isGenerateDependsOnGroups()) {
+ String dependsOnStr = Utils.arrayToString(testResult.getMethod().getGroupsDependedUpon());
+ if (!Utils.isStringEmpty(dependsOnStr)) {
+ attributes.setProperty(XMLReporterConfig.ATTR_DEPENDS_ON_GROUPS, dependsOnStr);
+ }
+ }
+
return attributes;
}
@@ -220,8 +234,8 @@
.STACKTRACE_SHORT) {
xmlBuffer.addRequired(XMLReporterConfig.TAG_SHORT_STACKTRACE, stackTraces[0]);
}
- if ((config.getStackTraceOutputMethod() & XMLReporterConfig.STACKTRACE_FULL) == XMLReporterConfig.STACKTRACE_FULL)
- {
+ if ((config.getStackTraceOutputMethod() & XMLReporterConfig.STACKTRACE_FULL) == XMLReporterConfig
+ .STACKTRACE_FULL) {
xmlBuffer.addRequired(XMLReporterConfig.TAG_FULL_STACKTRACE, stackTraces[1]);
}
@@ -229,17 +243,4 @@
}
}
- private String getGroupNamesString(ITestResult testResult) {
- String result = "";
- String[] groupNames = testResult.getMethod().getGroups();
- if ((groupNames != null) && (groupNames.length > 0)) {
- for (int i = 0; i < groupNames.length; i++) {
- result += groupNames[i];
- if (i < groupNames.length - 1) {
- result += ", ";
- }
- }
- }
- return result;
- }
}
\ No newline at end of file