Java 类org.testng.annotations.Guice 实例源码
项目:qaf
文件:TestRunner.java
@Override
public Injector getInjector(IClass iClass) {
Annotation annotation = AnnotationHelper.findAnnotationSuperClasses(Guice.class, iClass.getRealClass());
if (annotation == null) return null;
if (iClass instanceof TestClass) {
iClass = ((TestClass)iClass).getIClass();
}
if (!(iClass instanceof ClassImpl)) return null;
Injector parentInjector = ((ClassImpl)iClass).getParentInjector();
Guice guice = (Guice) annotation;
List<Module> moduleInstances = Lists.newArrayList(getModules(guice, parentInjector, iClass.getRealClass()));
// Reuse the previous injector, if any
Injector injector = getInjector(moduleInstances);
if (injector == null) {
injector = parentInjector.createChildInjector(moduleInstances);
addInjector(moduleInstances, injector);
}
return injector;
}
项目:buck
文件:TestNGRunner.java
/** Guessing whether or not a class is a test class is an imperfect art form. */
private boolean mightBeATestClass(Class<?> klass) {
int klassModifiers = klass.getModifiers();
// Test classes must be public, non-abstract, non-interface
if (!Modifier.isPublic(klassModifiers)
|| Modifier.isInterface(klassModifiers)
|| Modifier.isAbstract(klassModifiers)) {
return false;
}
// Test classes must either have a public, no-arg constructor, or have a constructor that
// initializes using dependency injection, via the org.testng.annotations.Guice annotation on
// the class and the com.google.inject.Inject or javax.inject.Inject annotation on the
// constructor.
boolean foundPublicNoArgConstructor = false;
boolean foundInjectedConstructor = false;
boolean hasGuiceAnnotation = klass.getAnnotationsByType(Guice.class).length > 0;
for (Constructor<?> c : klass.getConstructors()) {
if (Modifier.isPublic(c.getModifiers())) {
if (c.getParameterCount() == 0) {
foundPublicNoArgConstructor = true;
}
if (hasGuiceAnnotation
&& (c.getAnnotationsByType(com.google.inject.Inject.class).length > 0
|| c.getAnnotationsByType(javax.inject.Inject.class).length > 0)) {
foundInjectedConstructor = true;
}
}
}
if (!foundPublicNoArgConstructor && !foundInjectedConstructor) {
return false;
}
// Test classes must have at least one public test method (or something that generates tests)
boolean hasAtLeastOneTestMethod = false;
for (Method m : klass.getMethods()) {
if (Modifier.isPublic(m.getModifiers()) && m.getAnnotation(Test.class) != null) {
hasAtLeastOneTestMethod = true;
}
if (Modifier.isPublic(m.getModifiers()) && m.getAnnotation(Factory.class) != null) {
hasAtLeastOneTestMethod = true; // technically, not *quite* true, but close enough
}
}
return hasAtLeastOneTestMethod;
}