Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b99f90132a | ||
|
|
3d6b7b4d58 | ||
|
|
d1399dac02 |
@@ -0,0 +1,24 @@
|
||||
package space.kklochko.simple_jbdd;
|
||||
|
||||
import space.kklochko.simple_jbdd.tests.factories.AbstractTestRunnerFactory;
|
||||
import space.kklochko.simple_jbdd.tests.factories.SimpleTestRunnerFactory;
|
||||
import space.kklochko.simple_jbdd.tests.loaders.NameClassLoader;
|
||||
import space.kklochko.simple_jbdd.tests.reports.AbstractReporter;
|
||||
import space.kklochko.simple_jbdd.tests.reports.CLIReporter;
|
||||
import space.kklochko.simple_jbdd.tests.reports.fmt.SimpleTestReportFormatter;
|
||||
import space.kklochko.simple_jbdd.tests.runners.CLITestRunner;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
NameClassLoader loader = new NameClassLoader();
|
||||
AbstractTestRunnerFactory testRunnerFactory = new SimpleTestRunnerFactory();
|
||||
AbstractReporter reporter = new CLIReporter(new SimpleTestReportFormatter());
|
||||
|
||||
CLITestRunner runner = new CLITestRunner(loader, testRunnerFactory, reporter);
|
||||
|
||||
boolean status = runner.run();
|
||||
|
||||
System.exit(status ? 0 : 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,10 @@ import org.apache.commons.lang3.StringUtils;
|
||||
public class CLIReporter extends AbstractReporter {
|
||||
final int terminalWidth = 80;
|
||||
|
||||
public CLIReporter(AbstractTestReportFormatter formatter) {
|
||||
super(null, formatter);
|
||||
}
|
||||
|
||||
public CLIReporter(ArrayList<AbstractMap.SimpleEntry<AbstractTestCommandMetaDataFactory, Boolean>> metadata, AbstractTestReportFormatter formatter) {
|
||||
super(metadata, formatter);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
package space.kklochko.simple_jbdd.tests.runners;
|
||||
|
||||
import space.kklochko.simple_jbdd.tests.Test;
|
||||
import space.kklochko.simple_jbdd.tests.commands.AbstractTestCommand;
|
||||
import space.kklochko.simple_jbdd.tests.factories.AbstractTestRunnerFactory;
|
||||
import space.kklochko.simple_jbdd.tests.factories.TestCommandQueueFactory;
|
||||
import space.kklochko.simple_jbdd.tests.factories.meta.AbstractTestCommandMetaDataFactory;
|
||||
import space.kklochko.simple_jbdd.tests.factories.meta.TestCommandMetaDataFactory;
|
||||
import space.kklochko.simple_jbdd.tests.loaders.AbstractNameClassLoader;
|
||||
import space.kklochko.simple_jbdd.tests.loaders.SingleTestLoader;
|
||||
import space.kklochko.simple_jbdd.tests.reports.AbstractReporter;
|
||||
|
||||
import java.util.AbstractMap;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
public class CLITestRunner extends AbstractTestRunner {
|
||||
private ArrayList<AbstractTestCommand<Test>> commands;
|
||||
private AbstractNameClassLoader classLoader;
|
||||
private AbstractTestRunnerFactory runnerFactory;
|
||||
private AbstractReporter reporter;
|
||||
|
||||
public CLITestRunner(AbstractNameClassLoader classLoader, AbstractTestRunnerFactory runnerFactory, AbstractReporter reporter) {
|
||||
setClassLoader(classLoader);
|
||||
setRunnerFactory(runnerFactory);
|
||||
setReporter(reporter);
|
||||
}
|
||||
|
||||
public boolean run() {
|
||||
commands = createCommands(load());
|
||||
ArrayList<Boolean> testStatuses = runTests(commands);
|
||||
report(createMetadata(commands, testStatuses));
|
||||
|
||||
return isFailed(testStatuses);
|
||||
}
|
||||
|
||||
public ArrayList<Test> load() {
|
||||
Set<Class<?>> classes = this.classLoader.load();
|
||||
ArrayList<Test> tests = new ArrayList();
|
||||
|
||||
for(var aClass : classes) {
|
||||
tests.add((new SingleTestLoader(aClass.getName())).load());
|
||||
}
|
||||
|
||||
return tests;
|
||||
}
|
||||
|
||||
public ArrayList<AbstractTestCommand<Test>> createCommands(ArrayList<Test> tests) {
|
||||
TestCommandQueueFactory factory = new TestCommandQueueFactory(tests);
|
||||
return factory.create();
|
||||
}
|
||||
|
||||
public ArrayList<Boolean> runTests(ArrayList<AbstractTestCommand<Test>> commands) {
|
||||
return commands.stream()
|
||||
.map(c -> runnerFactory.create(c).run())
|
||||
.collect(Collectors.toCollection(ArrayList::new));
|
||||
}
|
||||
|
||||
public ArrayList<AbstractMap.SimpleEntry<AbstractTestCommandMetaDataFactory, Boolean>> createMetadata(ArrayList<AbstractTestCommand<Test>> commands, ArrayList<Boolean> testStatuses) {
|
||||
return IntStream.range(0, commands.size())
|
||||
.mapToObj(i -> new AbstractMap.SimpleEntry<AbstractTestCommandMetaDataFactory, Boolean>(
|
||||
new TestCommandMetaDataFactory(commands.get(i)),
|
||||
testStatuses.get(i)))
|
||||
.collect(Collectors.toCollection(ArrayList::new));
|
||||
}
|
||||
|
||||
public void report(ArrayList<AbstractMap.SimpleEntry<AbstractTestCommandMetaDataFactory, Boolean>> metadata) {
|
||||
reporter.setMetadata(metadata);
|
||||
reporter.report();
|
||||
}
|
||||
|
||||
public boolean isFailed(ArrayList<Boolean> testStatuses) {
|
||||
return !testStatuses.stream().anyMatch(b -> b == false);
|
||||
}
|
||||
|
||||
public AbstractNameClassLoader getClassLoader() {
|
||||
return classLoader;
|
||||
}
|
||||
|
||||
public void setClassLoader(AbstractNameClassLoader classLoader) {
|
||||
this.classLoader = classLoader;
|
||||
}
|
||||
|
||||
public AbstractTestRunnerFactory getRunnerFactory() {
|
||||
return runnerFactory;
|
||||
}
|
||||
|
||||
public void setRunnerFactory(AbstractTestRunnerFactory runnerFactory) {
|
||||
this.runnerFactory = runnerFactory;
|
||||
}
|
||||
|
||||
public AbstractReporter getReporter() {
|
||||
return reporter;
|
||||
}
|
||||
|
||||
public void setReporter(AbstractReporter reporter) {
|
||||
this.reporter = reporter;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user