package org.opennms.netmgt.junit.runner;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.junit.runner.Runner;
import org.junit.runners.Suite;
import org.junit.runners.model.InitializationError;
public class SeleniumJUnitRunner extends Suite{
@Retention(RetentionPolicy.RUNTIME)
public static @interface BaseUrl{
String url();
}
@Retention(RetentionPolicy.RUNTIME)
public static @interface TimeoutInSeconds{
int timeout();
}
private final List<Runner> m_runners = new ArrayList<Runner>();
public SeleniumJUnitRunner(Class<?> testClass) throws InitializationError
{
super(testClass, Collections.<Runner>emptyList());
m_runners.add(new TestClassRunnerForSelenium( getTestClass().getJavaClass(), getBaseUrlAnnotation( testClass ), getTimeoutAnnotation(testClass) ) );
}
private int getTimeoutAnnotation(Class<?> testClass) {
SeleniumJUnitRunner.TimeoutInSeconds timeout = testClass.getAnnotation(SeleniumJUnitRunner.TimeoutInSeconds.class);
if(timeout == null) {
return 3;
}else {
return timeout.timeout();
}
}
private String getBaseUrlAnnotation(Class<?> klass) {
SeleniumJUnitRunner.BaseUrl baseUrl = klass.getAnnotation(SeleniumJUnitRunner.BaseUrl.class);
if(baseUrl == null) {
return "";
}else {
return baseUrl.url();
}
}
@Override
protected List<Runner> getChildren(){
return m_runners;
}
}