@@ -21,31 +21,29 @@ internal TestDiscoverer(Assembly assembly, TestSuite testSuite, TestExecutor tes
2121 _reporter = testReporter ;
2222 }
2323
24- internal List < string > TEST_OBJECT_NAME_PATTERNS = new List < string > { "^[a-zA- Z].*Test" , "^[a-zA -Z].*Spec" , "^Test" , "^Spec" } ;
25- internal List < string > TEST_OBJECT_CHILD_TEST_NAME_PATTERNS = new List < string > { "^[a-zA -Z]" } ;
24+ internal List < string > TEST_OR_TEST_GROUP_NAME_PATTERNS = new List < string > { "^[A- Z].*Test" , "^[A -Z].*Spec" , "^Test" , "^Spec" } ;
25+ internal List < string > TEST_GROUP_CHILD_TEST_NAME_PATTERNS = new List < string > { "^[A-Z].*Test" , "^[A -Z].*Spec" , "^Test" , "^Spec" , "^It" , "^Should" , "^Can " } ;
2626
2727 internal void FindAndExecutorTests ( )
2828 {
2929 foreach ( var type in _assembly . GetTypes ( ) )
3030 {
3131 var isTestType = false ;
32- foreach ( var pattern in TEST_OBJECT_NAME_PATTERNS )
33- {
34- var typeMethods = type . GetMethods ( BindingFlags . NonPublic | BindingFlags . Static ) ;
35- foreach ( var method in typeMethods )
36- {
37- var methodName = GetTestMethodName ( method . Name ) ;
38- var isTestMethod = false ;
39- foreach ( var testObjectPattern in TEST_OBJECT_NAME_PATTERNS ) {
40- if ( new Regex ( testObjectPattern ) . IsMatch ( methodName ) ) {
41- isTestMethod = true ;
42- break ;
43- }
44- }
45- if ( isTestMethod ) {
46- _reporter . BeforeTest ( methodName ) ;
47- var result = _executor . ExecuteTestMethod ( method ) ;
48- }
32+ foreach ( var pattern in TEST_OR_TEST_GROUP_NAME_PATTERNS )
33+ if ( new Regex ( pattern ) . IsMatch ( type . Name ) || new Regex ( pattern ) . IsMatch ( type . FullName ) ) { isTestType = true ; break ; }
34+
35+ var typeMethods = new List < MethodInfo > ( type . GetMethods ( BindingFlags . NonPublic | BindingFlags . Instance ) ) ;
36+ typeMethods . AddRange ( type . GetMethods ( BindingFlags . NonPublic | BindingFlags . Static ) ) ;
37+
38+ foreach ( var method in typeMethods ) {
39+ var methodName = GetTestMethodName ( method . Name ) ;
40+ var isTestMethod = false ;
41+ var patternsToTest = isTestType ? TEST_GROUP_CHILD_TEST_NAME_PATTERNS : TEST_OR_TEST_GROUP_NAME_PATTERNS ;
42+ foreach ( var pattern in patternsToTest )
43+ if ( new Regex ( pattern ) . IsMatch ( methodName ) ) { isTestMethod = true ; break ; }
44+ if ( isTestMethod ) {
45+ _reporter . BeforeTest ( methodName ) ;
46+ var result = _executor . ExecuteTestMethod ( method ) ;
4947 }
5048 }
5149 }
0 commit comments