问题
Just about to implement a test framework with Maven+TestNG+Selenium.
How do you declare a suite.xml that tells TestNG to run ALL tests? I've tried all these to no avail:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Toplevel TestNG configuration" verbose="10">
<test name="all">
<classes>
<class name="*" />
</classes>
</test>
</suite>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Toplevel TestNG configuration" verbose="10">
<test name="all">
<groups>
<run>
<include name="*" />
<exclude name="disabled" />
</run>
</groups>
</test>
</suite>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Toplevel TestNG configuration" verbose="10">
<test name="all">
<packages>
<package name="*" />
</packages>
</test>
</suite>
I need to specify different suite configurations with different paramers but all running all tests. Every example I could dig up explicitely lists each class or package which makes less than zero sense to me.
回答1:
Should use .* to match them all as far as I know.
回答2:
You can add all test classes inside a package by declaring testng.xml file as
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="sampleTest" parallel="false">
<test name="sample-Test" preserve-order="true" verbose="2">
<packages>
<package name="org.sample.something.*"/>
</packages>
</test>
</suite>
There is nowhere to pass tests as search options. If you want to do something like that you have to implement the suite in code and implement search scenario there.
回答3:
Assume you have a three level package, your test classes are under the com.abc.xyz package.
<package name="*" /> </packages> , doesn't work.
<package name="com.*.*" /> doesn't work.
<package name="com.abc.*" /> does work.
回答4:
AFAIK testng doesn't have an option of regex like you are looking for.
But, I think you can get what you want in two ways :
If you are working on Eclipse with the Testng plugin. You can just select your test folder which has all the packages defined. With maven it would mostly be your src/test/java folder, right click and say run as testng. What this would do is it would create a temporary customsuite.xml which would have all your classes listed. You can save the xml as your default xml.
The surefire plugin with maven has an option of specifying includes and then a pattern. You can try setting it to */.java which I think would pickup all testcases (not tried though). You can invoke your tests as mvn test then.
回答5:
Below Works From 3 Level Pkg at TestNg
<package name="orgPkg.namePkg.appnamePkg.applicationPkg.functionalityPkg"/></packages>
来源:https://stackoverflow.com/questions/12473047/testng-xml-suite-to-include-all-packages-all-files