package org.opennms.netmgt.poller.monitor;
import static org.junit.Assert.assertEquals;
import groovy.lang.GroovyClassLoader;
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.codehaus.groovy.control.CompilationFailedException;
import org.junit.Test;
import org.junit.runner.Computer;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
import org.opennms.netmgt.junit.runner.SeleniumComputer;
public class GroovyRunnerTest {
@Test
public void testGroovyClassLoaderFailConstructorError() throws CompilationFailedException, IOException {
String filename = "src/test/resources/groovy/SeleniumGroovyTest.groovy";
Result result = runJUnitTests(getGroovyClass(filename));
assertEquals(1, result.getFailureCount());
}
@Test
public void testAnnotatedGroovyClassWithBaseUrl() throws IOException {
String filename = "src/test/resources/groovy/AnnotatedGroovyTest.groovy";
Result result = runJUnitTests(getGroovyClass(filename));
assertEquals(0, result.getFailureCount());
}
@Test
public void testCustomJUnitRunnerWithComputer() throws CompilationFailedException, IOException {
String filename = "src/test/resources/groovy/GroovyRunnerTest.groovy";
Computer computer = new SeleniumComputer("http://www.papajohns.co.uk");
Result result = runJunitTestWithComputer(computer, getGroovyClass(filename));
assertEquals(0, result.getFailureCount());
}
private Result runJunitTestWithComputer(Computer computer, Class<?> clazz) {
Result result = JUnitCore.runClasses(computer, clazz);
List<Failure> failures = result.getFailures();
for(Failure failure : failures) {
System.out.println(failure.getMessage());
}
return result;
}
private Class<?> getGroovyClass(String filename) throws IOException {
GroovyClassLoader gcl = new GroovyClassLoader();
Class<?> clazz = gcl.parseClass(new File(filename));
return clazz;
}
private Result runJUnitTests(Class<?> clazz) {
Result result = JUnitCore.runClasses(clazz);
List<Failure> failures = result.getFailures();
for(Failure failure : failures) {
System.out.println(failure.getMessage());
}
return result;
}
}