Compare commits

...
2 Commits
Author SHA1 Message Date
KKlochko 59d8fe7a4f Update the CLI test formatting.
continuous-integration/drone/tag Build is passing
2023-10-10 21:33:15 +03:00
KKlochko c27d3eca13 Add the SingleTestLoader to create an object of a loaded Test class.
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2023-10-08 19:57:51 +03:00
5 changed files with 90 additions and 9 deletions
@@ -0,0 +1,50 @@
package space.kklochko.simple_jbdd.tests.loaders;
import space.kklochko.simple_jbdd.tests.Test;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class SingleTestLoader {
String className;
public SingleTestLoader(String className) {
setClassName(className);
}
public Test load() {
SingleClassLoader loader = new SingleClassLoader(getClassName());
Class<?> aClass = loader.load();
if(aClass == null)
return null;
Constructor defaultConstructor = null;
for(Constructor constructor : aClass.getDeclaredConstructors()) {
if(constructor.getParameterCount() == 0) {
defaultConstructor = constructor;
break;
}
}
try {
return (Test) defaultConstructor.newInstance();
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
throw new RuntimeException(e);
}
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
}
@@ -20,15 +20,15 @@ public class CLIReporter extends AbstractReporter {
int passed = count(testData, true); int passed = count(testData, true);
int failed = count(testData, false); int failed = count(testData, false);
System.out.printf("%s\n", center(" Tests ")); System.out.printf("%s\n\n", center(" Tests "));
printTests(testData); printTests(testData);
if(failed != 0) { if(failed != 0) {
System.out.printf("\n%s\n", center(" Errors ")); System.out.printf("%s\n\n", center(" Errors "));
printTests(failedTestData); printTests(failedTestData);
} }
System.out.printf("\n%s\n", center(" Summary ")); System.out.printf("%s\n", center(" Summary "));
System.out.print(summary(passed, failed)); System.out.print(summary(passed, failed));
} }
@@ -25,10 +25,10 @@ public class SimpleTestReportFormatter extends AbstractTestReportFormatter {
for(int i=1; i<getTestMetaData().size(); ++i) { for(int i=1; i<getTestMetaData().size(); ++i) {
AbstractMap.SimpleEntry<String, String> pair = getTestMetaData().get(i); AbstractMap.SimpleEntry<String, String> pair = getTestMetaData().get(i);
result += String.format("\t%s %s\n", pair.getKey(), pair.getValue()); result += String.format("\t%s: %s\n", pair.getKey(), pair.getValue());
} }
return result; return result + '\n';
} }
public String getPassedIcon() { public String getPassedIcon() {
@@ -0,0 +1,31 @@
package space.kklochko.simple_jbdd.tests.loaders
import space.kklochko.simple_jbdd.test_examples.tests.SimpleThenTest
import spock.lang.Narrative
import spock.lang.Specification
import spock.lang.Subject
import spock.lang.Title
@Narrative("""The loader must return a class or null, so
those tests check if responses are right.
""")
@Title("Integrated tests for SingleTestLoader.")
class IntegratedSingleTestLoader extends Specification {
def "The class has been loaded."() {
given: "I have a class loader"
@Subject
def loader = new SingleTestLoader(className)
when: "The class was loaded"
def aClass = loader.load()
then: "Checking that the test result is expected"
aClass?.class == expectedClass
where: "Possible variants of tests"
className || expectedClass
"fourHundredFour" || null
"space.kklochko.simple_jbdd.test_examples.tests.SimpleThenTest" || SimpleThenTest
}
}
@@ -36,8 +36,8 @@ class SimpleTestReportFormatterSpec extends Specification {
where: "Possible variants of tests" where: "Possible variants of tests"
isPassed || expectedFormat isPassed || expectedFormat
true || "✓ A simple test\n\tThen Then block\n" true || "✓ A simple test\n\tThen: Then block\n\n"
false || " A simple test\n\tThen Then block\n" false || " A simple test\n\tThen: Then block\n\n"
} }
def "If the map of methods have GivenWhenThen blocks."() { def "If the map of methods have GivenWhenThen blocks."() {
@@ -61,8 +61,8 @@ class SimpleTestReportFormatterSpec extends Specification {
where: "Possible variants of tests" where: "Possible variants of tests"
isPassed || expectedFormat isPassed || expectedFormat
true || "✓ A simple test\n\tGiven Given block\n\tWhen When block\n\tThen Then block\n" true || "✓ A simple test\n\tGiven: Given block\n\tWhen: When block\n\tThen: Then block\n\n"
false || " A simple test\n\tGiven Given block\n\tWhen When block\n\tThen Then block\n" false || " A simple test\n\tGiven: Given block\n\tWhen: When block\n\tThen: Then block\n\n"
} }
} }