1
1
package org .junit .internal .runners .rules ;
2
2
3
3
import java .lang .annotation .Annotation ;
4
+ import java .lang .reflect .Modifier ;
4
5
import java .util .List ;
5
6
6
7
import org .junit .ClassRule ;
@@ -70,13 +71,19 @@ public void validate(TestClass target, List<Throwable> errors) {
70
71
}
71
72
72
73
private void validateMember (FrameworkMember <?> member , List <Throwable > errors ) {
74
+ validatePublicClass (member , errors );
73
75
validateStatic (member , errors );
74
76
validatePublic (member , errors );
75
77
validateTestRuleOrMethodRule (member , errors );
76
78
}
79
+
80
+ private void validatePublicClass (FrameworkMember <?> member , List <Throwable > errors ) {
81
+ if (fStaticMembers && !isDeclaringClassPublic (member )) {
82
+ addError (errors , member , " must be declared in a public class." );
83
+ }
84
+ }
77
85
78
- private void validateStatic (FrameworkMember <?> member ,
79
- List <Throwable > errors ) {
86
+ private void validateStatic (FrameworkMember <?> member , List <Throwable > errors ) {
80
87
if (fStaticMembers && !member .isStatic ()) {
81
88
addError (errors , member , "must be static." );
82
89
}
@@ -100,11 +107,14 @@ private void validateTestRuleOrMethodRule(FrameworkMember<?> member,
100
107
}
101
108
}
102
109
110
+ private boolean isDeclaringClassPublic (FrameworkMember <?> member ) {
111
+ return Modifier .isPublic (member .getDeclaringClass ().getModifiers ());
112
+ }
113
+
103
114
private boolean isTestRule (FrameworkMember <?> member ) {
104
115
return TestRule .class .isAssignableFrom (member .getType ());
105
116
}
106
117
107
- @ SuppressWarnings ("deprecation" )
108
118
private boolean isMethodRule (FrameworkMember <?> member ) {
109
119
return MethodRule .class .isAssignableFrom (member .getType ());
110
120
}
0 commit comments