1 package org.apache.maven.surefire.junit;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import junit.framework.Test;
23 import org.apache.maven.surefire.suite.AbstractDirectoryTestSuite;
24 import org.apache.maven.surefire.testset.PojoTestSet;
25 import org.apache.maven.surefire.testset.SurefireTestSet;
26 import org.apache.maven.surefire.testset.TestSetFailedException;
27
28 import java.io.File;
29 import java.util.ArrayList;
30
31
32
33
34
35
36 public class JUnitDirectoryTestSuite
37 extends AbstractDirectoryTestSuite
38 {
39 public JUnitDirectoryTestSuite( File basedir, ArrayList includes, ArrayList excludes )
40 {
41 super( basedir, includes, excludes );
42 }
43
44 protected SurefireTestSet createTestSet( Class testClass, ClassLoader classLoader )
45 throws TestSetFailedException
46 {
47 Class junitClass = null;
48 try
49 {
50 junitClass = classLoader.loadClass( Test.class.getName() );
51 }
52 catch ( NoClassDefFoundError e)
53 {
54
55 }
56 catch ( ClassNotFoundException e )
57 {
58
59 }
60
61 SurefireTestSet testSet;
62 if ( junitClass != null && junitClass.isAssignableFrom( testClass ) )
63 {
64 testSet = new JUnitTestSet( testClass );
65 }
66 else if (classHasPublicNoArgConstructor( testClass ))
67 {
68 testSet = new PojoTestSet( testClass );
69 }
70 else
71 {
72 testSet = null;
73 }
74 return testSet;
75 }
76
77 private boolean classHasPublicNoArgConstructor( Class testClass )
78 {
79 try
80 {
81 testClass.getConstructor( new Class[0] );
82 return true;
83 }
84 catch ( Exception e )
85 {
86 return false;
87 }
88 }
89 }