diff --git a/src/main/java/org/testng/SuiteRunner.java b/src/main/java/org/testng/SuiteRunner.java index ad3547d321..accbc208c8 100644 --- a/src/main/java/org/testng/SuiteRunner.java +++ b/src/main/java/org/testng/SuiteRunner.java @@ -54,10 +54,9 @@ public class SuiteRunner implements ISuite, Serializable, IInvokedMethodListener private transient Injector parentInjector; private transient List testListeners = Lists.newArrayList(); - private transient final Map, IClassListener> classListeners = Maps.newHashMap(); + private final transient Map, IClassListener> classListeners = Maps.newHashMap(); private transient ITestRunnerFactory tmpRunnerFactory; - private transient ITestRunnerFactory runnerFactory; private transient boolean useDefaultListeners = true; // The remote host where this suite was run, or null if run locally @@ -216,7 +215,7 @@ private void init(IConfiguration configuration, if (comparator == null) { throw new IllegalArgumentException("comparator must not be null"); } - this.runnerFactory = buildRunnerFactory(comparator); + ITestRunnerFactory iTestRunnerFactory = buildRunnerFactory(comparator); // Order the tags based on their order of appearance in testng.xml List xmlTests = xmlSuite.getTests(); @@ -228,7 +227,7 @@ public int compare(XmlTest arg0, XmlTest arg1) { }); for (XmlTest test : xmlTests) { - TestRunner tr = this.runnerFactory.newTestRunner(this, test, invokedMethodListeners.values(), Lists.newArrayList( + TestRunner tr = iTestRunnerFactory.newTestRunner(this, test, invokedMethodListeners.values(), Lists.newArrayList( this.classListeners.values())); // diff --git a/src/main/java/org/testng/internal/PackageUtils.java b/src/main/java/org/testng/internal/PackageUtils.java index a086cb9a08..9b85955fe8 100644 --- a/src/main/java/org/testng/internal/PackageUtils.java +++ b/src/main/java/org/testng/internal/PackageUtils.java @@ -9,9 +9,10 @@ import java.net.URL; import java.net.URLConnection; import java.net.URLDecoder; +import java.util.Collection; import java.util.Enumeration; import java.util.List; -import java.util.Vector; +import java.util.concurrent.ConcurrentLinkedDeque; import java.util.jar.JarEntry; import java.util.jar.JarFile; import java.util.regex.Pattern; @@ -31,7 +32,7 @@ public class PackageUtils { private static String[] testClassPaths; /** The additional class loaders to find classes in. */ - private static final List classLoaders = new Vector<>(); + private static final Collection classLoaders = new ConcurrentLinkedDeque<>(); private PackageUtils() { //Utility class. Defeat instantiation. diff --git a/src/main/java/org/testng/internal/Parameters.java b/src/main/java/org/testng/internal/Parameters.java index b74ed4d566..5cbedd6cc9 100644 --- a/src/main/java/org/testng/internal/Parameters.java +++ b/src/main/java/org/testng/internal/Parameters.java @@ -85,7 +85,7 @@ public class Parameters { */ static { - List> ctxTest = Arrays.asList(new Class[]{ITestContext.class, XmlTest.class}); + List> ctxTest = Arrays.>asList(ITestContext.class, XmlTest.class); List> beforeAfterMethod = Arrays.asList(ITestContext.class, XmlTest.class, Method.class, Object[].class, ITestResult.class); mapping.put(BeforeSuite.class.getSimpleName(), ctxTest); @@ -102,7 +102,7 @@ public class Parameters { mapping.put(BeforeMethod.class.getSimpleName(), beforeAfterMethod); mapping.put(AfterMethod.class.getSimpleName(), beforeAfterMethod); - mapping.put(Test.class.getSimpleName(), Arrays.asList(new Class[] {ITestContext.class})); + mapping.put(Test.class.getSimpleName(), Collections.>singletonList(ITestContext.class)); } diff --git a/src/main/java/org/testng/internal/TestMethodWorker.java b/src/main/java/org/testng/internal/TestMethodWorker.java index e2bb115493..7538eca1dd 100644 --- a/src/main/java/org/testng/internal/TestMethodWorker.java +++ b/src/main/java/org/testng/internal/TestMethodWorker.java @@ -16,7 +16,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import java.util.concurrent.CountDownLatch; /** * FIXME: reduce contention when this class is used through parallel invocation due to diff --git a/src/main/java/org/testng/internal/Utils.java b/src/main/java/org/testng/internal/Utils.java index 2d5aa63802..5bc1e29a0a 100644 --- a/src/main/java/org/testng/internal/Utils.java +++ b/src/main/java/org/testng/internal/Utils.java @@ -26,24 +26,22 @@ public final class Utils { private static final String LINE_SEP = System.getProperty("line.separator"); - public static final char[] SPECIAL_CHARACTERS = - {'*','/','\\','?','%',':',';','<','>','&','~','|'}; + private static final char[] SPECIAL_CHARACTERS = {'*','/','\\','?','%',':',';','<','>','&','~','|'}; public static final char CHAR_REPLACEMENT = '_'; public static final char UNICODE_REPLACEMENT = 0xFFFD; private static final String FORMAT = String.format("[%s]", Utils.class.getSimpleName()); private static final Logger LOG = Logger.getLogger(Utils.class); - private static final Map ESCAPES = new HashMap() { - private static final long serialVersionUID = 1285607660247157523L; + private static final Map ESCAPES = new HashMap<>(); - { - put('<', "<"); - put('>', ">"); - put('\'', "'"); - put('"', """); - put('&', "&"); - }}; + static { + ESCAPES.put('<', "<"); + ESCAPES.put('>', ">"); + ESCAPES.put('\'', "'"); + ESCAPES.put('"', """); + ESCAPES.put('&', "&"); + } /** * Hide constructor for utility class. @@ -155,11 +153,13 @@ public static void writeFile(@Nullable String outputDir, String fileName, String * Writes the content of the sb string to the file named filename in outDir. If * outDir does not exist, it is created. * - * @param outDir the output directory (may not exist). If null then current directory is used. - * @param fileName the filename + * @param outputFolder the output directory (may not exist). If null then current directory is used. + * @param fileNameParameter the filename * @param sb the file content */ - private static void writeFile(@Nullable File outDir, String fileName, String sb, @Nullable String encoding) { + private static void writeFile(@Nullable File outputFolder, String fileNameParameter, String sb, @Nullable String encoding) { + File outDir = outputFolder; + String fileName = fileNameParameter; try { if (outDir == null) { outDir = new File("").getAbsoluteFile(); @@ -219,10 +219,11 @@ private static void writeFile(File outputFile, String sb, @Nullable String encod * exist, it is created. If the output file exists, it is deleted. The output file is * created in any case. * @param outputDir output directory. If null, then current directory is used - * @param fileName file name + * @param fileNameParameter file name * @throws IOException if anything goes wrong while creating files. */ - public static BufferedWriter openWriter(@Nullable String outputDir, String fileName) throws IOException { + public static BufferedWriter openWriter(@Nullable String outputDir, String fileNameParameter) throws IOException { + String fileName = fileNameParameter; String outDirPath= outputDir != null ? outputDir : ""; File outDir= new File(outDirPath); if (!outDir.exists()) { @@ -719,10 +720,11 @@ public static String arrayToString(String[] strings) { * In order to have the same behavior of testng on the all platforms, characters like * will * be replaced on all platforms whether they are causing the problem or not. * - * @param fileName file name that could contain special characters. + * @param fileNameParameter file name that could contain special characters. * @return fileName with special characters replaced */ - public static String replaceSpecialCharacters(String fileName) { + public static String replaceSpecialCharacters(String fileNameParameter) { + String fileName = fileNameParameter; if (fileName == null || fileName.length() == 0) { return fileName; } @@ -808,14 +810,14 @@ public static void checkReturnType(Method method, Class... returnTypes) { private static String toString(Class[] classes) { StringBuilder sb = new StringBuilder("[ "); - for (int i=0; i clazz = classes[i]; if (clazz.isArray()) { sb.append(clazz.getComponentType().getName()).append("[]"); } else { sb.append(clazz.getName()); } - if (++i < classes.length) { // increment and compare + if ( (i+1) < classes.length) { // increment and compare sb.append(" or "); } } diff --git a/src/main/java/org/testng/internal/annotations/AnnotationHelper.java b/src/main/java/org/testng/internal/annotations/AnnotationHelper.java index 515b8e965e..ce54417bc6 100644 --- a/src/main/java/org/testng/internal/annotations/AnnotationHelper.java +++ b/src/main/java/org/testng/internal/annotations/AnnotationHelper.java @@ -41,7 +41,7 @@ public class AnnotationHelper { IBeforeGroups.class, IAfterGroups.class }; - public static final Class[] CONFIGURATION_CLASSES = new Class[] { + private static final Class[] CONFIGURATION_CLASSES = new Class[] { IConfigurationAnnotation.class, IBeforeSuite.class, IAfterSuite.class, IBeforeTest.class, IAfterTest.class, diff --git a/src/main/java/org/testng/internal/reflect/ReflectionRecipes.java b/src/main/java/org/testng/internal/reflect/ReflectionRecipes.java index 3689168e75..b5990cd617 100644 --- a/src/main/java/org/testng/internal/reflect/ReflectionRecipes.java +++ b/src/main/java/org/testng/internal/reflect/ReflectionRecipes.java @@ -145,7 +145,7 @@ public static Class[] classesFromParameters(final Parameter[] parameters) { */ public static Parameter[] getMethodParameters(final Method method) { if (method == null) { - return null; + return new Parameter[]{}; } return getParameters(method.getParameterTypes(), method.getParameterAnnotations()); } @@ -158,7 +158,7 @@ public static Parameter[] getMethodParameters(final Method method) { */ public static Parameter[] getConstructorParameters(final Constructor constructor) { if (constructor == null) { - return null; + return new Parameter[]{}; } return getParameters(constructor.getParameterTypes(), constructor.getParameterAnnotations()); } diff --git a/src/main/java/org/testng/reporters/JUnitReportReporter.java b/src/main/java/org/testng/reporters/JUnitReportReporter.java index d4cbd8e978..caa67c71ad 100644 --- a/src/main/java/org/testng/reporters/JUnitReportReporter.java +++ b/src/main/java/org/testng/reporters/JUnitReportReporter.java @@ -136,11 +136,11 @@ public void generateReport(List xmlSuites, List suites, testCases.add(createIgnoredTestTagFor(eachMethod)); } - p1.setProperty(XMLConstants.ATTR_FAILURES, "" + failures); - p1.setProperty(XMLConstants.ATTR_ERRORS, "" + errors); - p1.setProperty(XMLConstants.SKIPPED, "" + (skipped + ignored)); + p1.setProperty(XMLConstants.ATTR_FAILURES, Integer.toString(failures)); + p1.setProperty(XMLConstants.ATTR_ERRORS, Integer.toString(errors)); + p1.setProperty(XMLConstants.SKIPPED, Integer.toString(skipped + ignored)); p1.setProperty(XMLConstants.ATTR_NAME, cls.getName()); - p1.setProperty(XMLConstants.ATTR_TESTS, "" + (testCount + ignored)); + p1.setProperty(XMLConstants.ATTR_TESTS, Integer.toString(testCount + ignored)); p1.setProperty(XMLConstants.ATTR_TIME, "" + formatTime(totalTime)); try { p1.setProperty(XMLConstants.ATTR_HOSTNAME, InetAddress.getLocalHost().getHostName()); diff --git a/src/main/java/org/testng/reporters/SuiteHTMLReporter.java b/src/main/java/org/testng/reporters/SuiteHTMLReporter.java index 92a2c03f68..c869108919 100644 --- a/src/main/java/org/testng/reporters/SuiteHTMLReporter.java +++ b/src/main/java/org/testng/reporters/SuiteHTMLReporter.java @@ -40,6 +40,8 @@ public class SuiteHTMLReporter implements IReporter { public static final String REPORTER_OUTPUT = "reporter-output.html"; public static final String METHODS_NOT_RUN = "methods-not-run.html"; public static final String TESTNG_XML = "testng.xml.html"; + private static final String TD_A_TARGET_MAIN_FRAME_HREF = "") .append("") .append(name).append("\n"); - suiteBuf.append("").append(passedTests).append("") - .append("").append(failedTests).append("") - .append("").append(skippedTests).append("") + suiteBuf.append("").append(passedTests).append(CLOSE_TD) + .append("").append(failedTests).append(CLOSE_TD) + .append("").append(skippedTests).append(CLOSE_TD) .append("Link").append("") .append(""); @@ -441,7 +443,7 @@ else if (s.startsWith(AFTER)) { result.append(" \n"); } else { - result.append("").append(SP).append(""); + result.append("").append(SP).append(CLOSE_TD); } return result.toString(); @@ -465,7 +467,7 @@ private void generateMethodsAndGroups(XmlSuite xmlSuite, ISuite suite) { Arrays.sort(groupNames); for (String group : groupNames) { Collection methods = groups.get(group); - sb.append("").append(group).append(""); + sb.append("").append(group).append(CLOSE_TD); StringBuilder methodNames = new StringBuilder(); Map uniqueMethods = Maps.newHashMap(); for (ITestNGMethod tm : methods) { @@ -484,7 +486,7 @@ private void generateMethodsAndGroups(XmlSuite xmlSuite, ISuite suite) { private void generateIndex(XmlSuite xmlSuite, ISuite sr) { - String index = String.format("Results for %s\n", sr.getName()) + String index = String.format("Results for %s%n", sr.getName()) + "\n" + "\n" + "\n" @@ -499,7 +501,7 @@ private String makeTitle(ISuite suite) { } private void generateMain(XmlSuite xmlSuite, ISuite sr) { - String index = String.format("Results for %s\n", sr.getName()) + String index = String.format("Results for %s%n", sr.getName()) + "Select a result on the left-hand pane." + "\n"; @@ -560,9 +562,9 @@ private void generateTableOfContents(XmlSuite xmlSuite, ISuite suite) { .append("\n") .append("\n") - .append("").append(groupCount).append(pluralize(groupCount, " group")).append("\n") - .append("reporter output\n") - .append("testng.xml\n") + .append(TD_A_TARGET_MAIN_FRAME_HREF).append(GROUPS).append("'>").append(groupCount).append(pluralize(groupCount, " group")).append("\n") + .append(TD_A_TARGET_MAIN_FRAME_HREF).append(REPORTER_OUTPUT).append("'>reporter output\n") + .append(TD_A_TARGET_MAIN_FRAME_HREF).append(TESTNG_XML).append("'>testng.xml\n") .append("") .append(""); @@ -655,10 +657,10 @@ private void generateSuiteResult(String suiteName, .append("") .append("") + .append(CLOSE_TD) .append("") + .append(CLOSE_TD) .append("
") .append(suiteName).append(" (").append(passed).append("/").append(failed).append("/").append(skipped).append(")") - .append("\n") .append(" Results\n") - .append("
\n") .append("

\n") ;