1package org.testng;
2
3import com.beust.jcommander.Parameter;
4import com.beust.jcommander.converters.CommaParameterSplitter;
5
6import org.testng.collections.Lists;
7import org.testng.xml.XmlSuite;
8
9import java.util.ArrayList;
10import java.util.List;
11
12public class CommandLineArgs {
13
14  @Parameter(description = "The XML suite files to run")
15  public List<String> suiteFiles = Lists.newArrayList();
16
17  public static final String LOG = "-log";
18  public static final String VERBOSE = "-verbose";
19  @Parameter(names = { LOG, VERBOSE }, description = "Level of verbosity")
20  public Integer verbose;
21
22  public static final String GROUPS = "-groups";
23  @Parameter(names = GROUPS, description = "Comma-separated list of group names to be run")
24  public String groups;
25
26  public static final String EXCLUDED_GROUPS = "-excludegroups";
27  @Parameter(names = EXCLUDED_GROUPS, description ="Comma-separated list of group names to "
28      + " exclude")
29  public String excludedGroups;
30
31  public static final String OUTPUT_DIRECTORY = "-d";
32  @Parameter(names = OUTPUT_DIRECTORY, description ="Output directory")
33  public String outputDirectory;
34
35  public static final String JUNIT = "-junit";
36  @Parameter(names = JUNIT, description ="JUnit mode")
37  public Boolean junit = Boolean.FALSE;
38
39  public static final String MIXED = "-mixed";
40  @Parameter(names = MIXED, description ="Mixed mode - autodetect the type of current test" +
41      " and run it with appropriate runner")
42  public Boolean mixed = Boolean.FALSE;
43
44  public static final String LISTENER = "-listener";
45  @Parameter(names = LISTENER, description = "List of .class files or list of class names" +
46      " implementing ITestListener or ISuiteListener")
47  public String listener;
48
49  public static final String METHOD_SELECTORS = "-methodselectors";
50  @Parameter(names = METHOD_SELECTORS, description = "List of .class files or list of class " +
51        "names implementing IMethodSelector")
52  public String methodSelectors;
53
54  public static final String OBJECT_FACTORY = "-objectfactory";
55  @Parameter(names = OBJECT_FACTORY, description = "List of .class files or list of class " +
56        "names implementing ITestRunnerFactory")
57  public String objectFactory;
58
59  public static final String PARALLEL= "-parallel";
60  @Parameter(names = PARALLEL, description = "Parallel mode (methods, tests or classes)")
61  public XmlSuite.ParallelMode parallelMode;
62
63  public static final String CONFIG_FAILURE_POLICY = "-configfailurepolicy";
64  @Parameter(names = CONFIG_FAILURE_POLICY , description = "Configuration failure policy (skip or continue)")
65  public String configFailurePolicy;
66
67  public static final String THREAD_COUNT = "-threadcount";
68  @Parameter(names = THREAD_COUNT, description = "Number of threads to use when running tests " +
69      "in parallel")
70  public Integer threadCount;
71
72  public static final String DATA_PROVIDER_THREAD_COUNT = "-dataproviderthreadcount";
73  @Parameter(names = DATA_PROVIDER_THREAD_COUNT, description = "Number of threads to use when " +
74      "running data providers")
75  public Integer dataProviderThreadCount;
76
77  public static final String SUITE_NAME = "-suitename";
78  @Parameter(names = SUITE_NAME, description = "Default name of test suite, if not specified " +
79      "in suite definition file or source code")
80  public String suiteName;
81
82  public static final String TEST_NAME = "-testname";
83  @Parameter(names = TEST_NAME, description = "Default name of test, if not specified in suite" +
84      "definition file or source code")
85  public String testName;
86
87  public static final String REPORTER = "-reporter";
88  @Parameter(names = REPORTER, description = "Extended configuration for custom report listener")
89  public String reporter;
90
91  public static final String USE_DEFAULT_LISTENERS = "-usedefaultlisteners";
92  @Parameter(names = USE_DEFAULT_LISTENERS, description = "Whether to use the default listeners")
93  public String useDefaultListeners = "true";
94
95  public static final String SKIP_FAILED_INVOCATION_COUNTS = "-skipfailedinvocationcounts";
96  @Parameter(names = SKIP_FAILED_INVOCATION_COUNTS, hidden = true)
97  public Boolean skipFailedInvocationCounts;
98
99  public static final String TEST_CLASS = "-testclass";
100  @Parameter(names = TEST_CLASS, description = "The list of test classes")
101  public String testClass;
102
103  public static final String TEST_NAMES = "-testnames";
104  @Parameter(names = TEST_NAMES, description = "The list of test names to run")
105  public String testNames;
106
107  public static final String TEST_JAR = "-testjar";
108  @Parameter(names = TEST_JAR, description = "A jar file containing the tests")
109  public String testJar;
110
111  public static final String XML_PATH_IN_JAR = "-xmlpathinjar";
112  public static final String XML_PATH_IN_JAR_DEFAULT = "testng.xml";
113  @Parameter(names = XML_PATH_IN_JAR, description = "The full path to the xml file inside the jar file (only valid if -testjar was specified)")
114  public String xmlPathInJar = XML_PATH_IN_JAR_DEFAULT;
115
116  public static final String TEST_RUNNER_FACTORY = "-testrunfactory";
117  @Parameter(names = { TEST_RUNNER_FACTORY, "-testRunFactory" },
118      description = "The factory used to create tests")
119  public String testRunnerFactory;
120
121  public static final String PORT = "-port";
122  @Parameter(names = PORT, description = "The port")
123  public Integer port;
124
125  public static final String HOST = "-host";
126  @Parameter(names = HOST, description = "The host", hidden = true)
127  public String host;
128
129  public static final String MASTER = "-master";
130  @Parameter(names = MASTER, description = "Host where the master is", hidden = true)
131  public String master;
132
133  public static final String SLAVE = "-slave";
134  @Parameter(names = SLAVE, description = "Host where the slave is", hidden = true)
135  public String slave;
136
137  public static final String METHODS = "-methods";
138  @Parameter(names = METHODS, description = "Comma separated of test methods",
139      splitter = CommaParameterSplitter.class)
140  public List<String> commandLineMethods = new ArrayList<>();
141
142  public static final String SUITE_THREAD_POOL_SIZE = "-suitethreadpoolsize";
143  public static final Integer SUITE_THREAD_POOL_SIZE_DEFAULT = 1;
144  @Parameter(names = SUITE_THREAD_POOL_SIZE, description = "Size of the thread pool to use"
145        + " to run suites")
146  public Integer suiteThreadPoolSize = SUITE_THREAD_POOL_SIZE_DEFAULT;
147
148  public static final String RANDOMIZE_SUITES = "-randomizesuites";
149  @Parameter(names = RANDOMIZE_SUITES, hidden = true,
150      description = "Whether to run suites in same order as specified in XML or not")
151  public Boolean randomizeSuites = Boolean.FALSE;
152
153  public static final String DEBUG = "-debug";
154  @Parameter(names = DEBUG, hidden = true, description = "Used to debug TestNG")
155  public Boolean debug = Boolean.FALSE;
156
157}
158