package org.testng.xml;
import java.util.Arrays;
import org.testng.SuiteRunner;
import org.testng.annotations.ITestAnnotation;
import org.testng.internal.ClassHelper;
import org.testng.internal.Utils;
import org.testng.internal.annotations.AnnotationConfiguration;
import org.testng.internal.annotations.IAnnotationFinder;
/**
* This class represents an XML <code><suite></code> made up of one test which is
* made up of <class> elements only. Given a testName "testName" it is equivalent to the
* following XML <suite>:
*
* <pre><code>
* <suite name ="Suite for testName">
* <test name ="testName">
* <classes>
* ...
* </classes>
* </test>
* </suite>
* </code></pre>
*
* This class is typically used to build a XML <suite> from command line class parameters.
* @author jolly
*/
// TODO CQ why does this class exist? Should'nt this be a constructor in XmlSuite, a
// factory helper or a simple class not extending XmlSuite outside this package?
// The code uses instanceof test on this class to set the annotation type.
public class ClassSuite extends XmlSuite {
/**
* Constructs a <code>XmlSuite</code>. The suite has the following characteristics:
* <ul>
* <li>The suite name is "Suite for testName"</li>
* <li>The suite is made up of a single test named "testName"</li>
* <li>The test is made up of list <class> only</li>
* </ul>
*
* @param testName the suite and inner test name.
* @param classes the classes making up the suite test.
*/
public ClassSuite(String testName, Class[] classes) {
super();
XmlClass[] xmlClasses = Utils.classesToXmlClasses(classes);
XmlTest oneTest = new XmlTest(this);
oneTest.setName(testName);
oneTest.setXmlClasses(Arrays.asList(xmlClasses));
Class c = classes[0];
setName("Suite for " + testName); // Set the suite name to the test name, too
}
}