Compare commits
8
Commits
0.12.7
...
87c9c83c20
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
87c9c83c20 | ||
|
|
11b1377a37 | ||
|
|
238957419e | ||
|
|
c00320e295 | ||
|
|
ba9ce975c8 | ||
|
|
7ac264e5e8 | ||
|
|
e6de1bde03 | ||
|
|
8b7ba5f18b |
@@ -0,0 +1,16 @@
|
|||||||
|
package space.kklochko.simple_jbdd.test_examples.samples;
|
||||||
|
|
||||||
|
public class Calculator {
|
||||||
|
public int plus(int a, int b) {
|
||||||
|
return a + b;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int subtract(int a, int b) {
|
||||||
|
return a - b;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int multiply(int a, int b) {
|
||||||
|
return a * b + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
+38
@@ -0,0 +1,38 @@
|
|||||||
|
package space.kklochko.simple_jbdd.test_examples.tests;
|
||||||
|
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Given;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Then;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Title;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.When;
|
||||||
|
import space.kklochko.simple_jbdd.test_examples.samples.Calculator;
|
||||||
|
import space.kklochko.simple_jbdd.tests.Test;
|
||||||
|
|
||||||
|
@Title("3*3 must be 9")
|
||||||
|
public class CalculatorMultiplyTest extends Test {
|
||||||
|
Calculator calculator;
|
||||||
|
int a;
|
||||||
|
int b;
|
||||||
|
int result;
|
||||||
|
|
||||||
|
@Given("Set up the calculator")
|
||||||
|
public void given() {
|
||||||
|
calculator = new Calculator();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Given("Set up the arguments")
|
||||||
|
public void setupArguments() {
|
||||||
|
a = 3;
|
||||||
|
b = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
@When("Invoke the multiply method")
|
||||||
|
public void when() {
|
||||||
|
result = calculator.multiply(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Then("3*3 must be 9")
|
||||||
|
public void then() {
|
||||||
|
assert result == 9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
package space.kklochko.simple_jbdd.test_examples.tests;
|
||||||
|
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Given;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Then;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Title;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.When;
|
||||||
|
import space.kklochko.simple_jbdd.test_examples.samples.Calculator;
|
||||||
|
import space.kklochko.simple_jbdd.tests.Test;
|
||||||
|
|
||||||
|
@Title("2+2 must be 4")
|
||||||
|
public class CalculatorPlusTest extends Test {
|
||||||
|
Calculator calculator;
|
||||||
|
int a;
|
||||||
|
int b;
|
||||||
|
int result;
|
||||||
|
|
||||||
|
@Given("Set up the calculator")
|
||||||
|
public void given() {
|
||||||
|
calculator = new Calculator();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Given("Set up the arguments")
|
||||||
|
public void setupArguments() {
|
||||||
|
a = b = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@When("Invoke the plus method")
|
||||||
|
public void when() {
|
||||||
|
result = calculator.plus(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Then("2+2 must be 4")
|
||||||
|
public void then() {
|
||||||
|
assert result == 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
+38
@@ -0,0 +1,38 @@
|
|||||||
|
package space.kklochko.simple_jbdd.test_examples.tests;
|
||||||
|
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Given;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Then;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Title;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.When;
|
||||||
|
import space.kklochko.simple_jbdd.test_examples.samples.Calculator;
|
||||||
|
import space.kklochko.simple_jbdd.tests.Test;
|
||||||
|
|
||||||
|
@Title("4-2 must be 2")
|
||||||
|
public class CalculatorSubtractTes extends Test {
|
||||||
|
Calculator calculator;
|
||||||
|
int a;
|
||||||
|
int b;
|
||||||
|
int result;
|
||||||
|
|
||||||
|
@Given("Set up the calculator")
|
||||||
|
public void given() {
|
||||||
|
calculator = new Calculator();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Given("Set up the arguments")
|
||||||
|
public void setupArguments() {
|
||||||
|
a = 4;
|
||||||
|
b = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@When("Invoke the subtract method")
|
||||||
|
public void when() {
|
||||||
|
result = calculator.subtract(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Then("4-2 must be 2")
|
||||||
|
public void then() {
|
||||||
|
assert result == 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
+38
@@ -0,0 +1,38 @@
|
|||||||
|
package space.kklochko.simple_jbdd.test_examples.tests;
|
||||||
|
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Given;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Then;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Title;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.When;
|
||||||
|
import space.kklochko.simple_jbdd.test_examples.samples.Calculator;
|
||||||
|
import space.kklochko.simple_jbdd.tests.Test;
|
||||||
|
|
||||||
|
@Title("4-2 must be 2")
|
||||||
|
public class CalculatorSubtractTest extends Test {
|
||||||
|
Calculator calculator;
|
||||||
|
int a;
|
||||||
|
int b;
|
||||||
|
int result;
|
||||||
|
|
||||||
|
@Given("Set up the calculator")
|
||||||
|
public void given() {
|
||||||
|
calculator = new Calculator();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Given("Set up the arguments")
|
||||||
|
public void setupArguments() {
|
||||||
|
a = 4;
|
||||||
|
b = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@When("Invoke the subtract method")
|
||||||
|
public void when() {
|
||||||
|
result = calculator.subtract(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Then("4-2 must be 2")
|
||||||
|
public void then() {
|
||||||
|
assert result == 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
+38
@@ -0,0 +1,38 @@
|
|||||||
|
package space.kklochko.simple_jbdd.test_examples.tests;
|
||||||
|
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Given;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Then;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Title;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.When;
|
||||||
|
import space.kklochko.simple_jbdd.test_examples.samples.Calculator;
|
||||||
|
import space.kklochko.simple_jbdd.tests.Test;
|
||||||
|
|
||||||
|
@Title("Test that has method arguments")
|
||||||
|
public class HasMethodArgumentsTest extends Test {
|
||||||
|
Calculator calculator;
|
||||||
|
int a;
|
||||||
|
int b;
|
||||||
|
int result;
|
||||||
|
|
||||||
|
@Given("Set up the calculator in a private method")
|
||||||
|
public void given(int a, int b) {
|
||||||
|
calculator = new Calculator();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Given("Set up the arguments with arguments")
|
||||||
|
public void setupArguments(int a, int b) {
|
||||||
|
this.a = 4;
|
||||||
|
this.b = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@When("Invoke the subtract method")
|
||||||
|
public void when() {
|
||||||
|
result = calculator.subtract(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Then("4-2 must be 2 and return Bool value")
|
||||||
|
public void then() {
|
||||||
|
assert result == 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
+39
@@ -0,0 +1,39 @@
|
|||||||
|
package space.kklochko.simple_jbdd.test_examples.tests;
|
||||||
|
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Given;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Then;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Title;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.When;
|
||||||
|
import space.kklochko.simple_jbdd.test_examples.samples.Calculator;
|
||||||
|
import space.kklochko.simple_jbdd.tests.Test;
|
||||||
|
|
||||||
|
@Title("Test with a method that return boolean")
|
||||||
|
public class HasNonVoidMethodTest extends Test {
|
||||||
|
Calculator calculator;
|
||||||
|
int a;
|
||||||
|
int b;
|
||||||
|
int result;
|
||||||
|
|
||||||
|
@Given("Set up the calculator in a private method")
|
||||||
|
public void given() {
|
||||||
|
calculator = new Calculator();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Given("Set up the arguments")
|
||||||
|
public void setupArguments() {
|
||||||
|
this.a = 4;
|
||||||
|
this.b = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@When("Invoke the subtract method")
|
||||||
|
public void when() {
|
||||||
|
result = calculator.subtract(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Then("4-2 must be 2 and return result")
|
||||||
|
public boolean then() {
|
||||||
|
assert result == 2;
|
||||||
|
return result != 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
+38
@@ -0,0 +1,38 @@
|
|||||||
|
package space.kklochko.simple_jbdd.test_examples.tests;
|
||||||
|
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Given;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Then;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.Title;
|
||||||
|
import space.kklochko.simple_jbdd.annotations.When;
|
||||||
|
import space.kklochko.simple_jbdd.test_examples.samples.Calculator;
|
||||||
|
import space.kklochko.simple_jbdd.tests.Test;
|
||||||
|
|
||||||
|
@Title("Test with a private method")
|
||||||
|
public class HasPrivateMethodTest extends Test {
|
||||||
|
Calculator calculator;
|
||||||
|
int a;
|
||||||
|
int b;
|
||||||
|
int result;
|
||||||
|
|
||||||
|
@Given("Set up the calculator in a private method")
|
||||||
|
private void given() {
|
||||||
|
calculator = new Calculator();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Given("Set up the arguments")
|
||||||
|
public void setupArguments() {
|
||||||
|
this.a = 4;
|
||||||
|
this.b = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@When("Invoke the subtract method")
|
||||||
|
public void when() {
|
||||||
|
result = calculator.subtract(a, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Then("4-2 must be 2")
|
||||||
|
public void then() {
|
||||||
|
assert result == 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
+6
-6
@@ -17,34 +17,34 @@ public class SimpleGivenGivenWhenWhenThenThenTest extends Test {
|
|||||||
private int resultCB;
|
private int resultCB;
|
||||||
|
|
||||||
@Given("Create the Sum object")
|
@Given("Create the Sum object")
|
||||||
void setup() {
|
public void setup() {
|
||||||
sum = new Sum();
|
sum = new Sum();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Given("Setup the arguments")
|
@Given("Setup the arguments")
|
||||||
void setupArgs() {
|
public void setupArgs() {
|
||||||
a = 10;
|
a = 10;
|
||||||
b = 20;
|
b = 20;
|
||||||
c = 30;
|
c = 30;
|
||||||
}
|
}
|
||||||
|
|
||||||
@When("Call the .sum(10, 20)")
|
@When("Call the .sum(10, 20)")
|
||||||
void triggerAB() {
|
public void triggerAB() {
|
||||||
resultAB = sum.sum(a, b);
|
resultAB = sum.sum(a, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
@When("Call the .sum(30, 20)")
|
@When("Call the .sum(30, 20)")
|
||||||
void triggerCB() {
|
public void triggerCB() {
|
||||||
resultCB = sum.sum(c, b);
|
resultCB = sum.sum(c, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Then("10 + 20 is 30")
|
@Then("10 + 20 is 30")
|
||||||
void checkAB() {
|
public void checkAB() {
|
||||||
assert 30 == resultAB;
|
assert 30 == resultAB;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Then("30 + 20 is 50")
|
@Then("30 + 20 is 50")
|
||||||
void checkCB() {
|
public void checkCB() {
|
||||||
assert 50 == resultCB;
|
assert 50 == resultCB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -14,18 +14,18 @@ public class SimpleGivenWhenThenTest extends Test {
|
|||||||
private int b;
|
private int b;
|
||||||
|
|
||||||
@Given
|
@Given
|
||||||
void setup() {
|
public void setup() {
|
||||||
sum = new Sum();
|
sum = new Sum();
|
||||||
}
|
}
|
||||||
|
|
||||||
@When
|
@When
|
||||||
void trigger() {
|
public void trigger() {
|
||||||
a = 10;
|
a = 10;
|
||||||
b = 20;
|
b = 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Then
|
@Then
|
||||||
void check() {
|
public void check() {
|
||||||
assert 30 == sum.sum(a, b);
|
assert 30 == sum.sum(a, b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ public class BlockDecorator<T extends Test> extends AbstractDecorator<T> {
|
|||||||
|
|
||||||
public boolean runMethod() {
|
public boolean runMethod() {
|
||||||
try {
|
try {
|
||||||
method.setAccessible(true);
|
|
||||||
method.invoke(getCommand().getObject());
|
method.invoke(getCommand().getObject());
|
||||||
return true;
|
return true;
|
||||||
} catch (InvocationTargetException e) {
|
} catch (InvocationTargetException e) {
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import space.kklochko.simple_jbdd.tests.commands.AbstractTestCommand;
|
|||||||
import space.kklochko.simple_jbdd.tests.commands.SimpleTestCommand;
|
import space.kklochko.simple_jbdd.tests.commands.SimpleTestCommand;
|
||||||
import space.kklochko.simple_jbdd.tests.commands.decorators.BlockDecorator;
|
import space.kklochko.simple_jbdd.tests.commands.decorators.BlockDecorator;
|
||||||
import space.kklochko.simple_jbdd.tests.commands.decorators.ErrorDecorator;
|
import space.kklochko.simple_jbdd.tests.commands.decorators.ErrorDecorator;
|
||||||
|
import space.kklochko.simple_jbdd.tests.factories.validators.*;
|
||||||
|
|
||||||
import java.lang.annotation.Annotation;
|
import java.lang.annotation.Annotation;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
@@ -21,8 +22,18 @@ public class TestCommandFactory {
|
|||||||
|
|
||||||
AbstractTestCommand<Test> aTestCommand = createTest(aClass, input);
|
AbstractTestCommand<Test> aTestCommand = createTest(aClass, input);
|
||||||
|
|
||||||
if(test_methods.size() == 0)
|
ArrayList<Validator> validators = new ArrayList<>();
|
||||||
return new ErrorDecorator("ERROR!!! No blocks!!!", aTestCommand, "Error");
|
validators.add(new EmptyValidator());
|
||||||
|
validators.add(new HasMethodsWithArgumentsValidator());
|
||||||
|
validators.add(new HasNonVoidMethodsValidator());
|
||||||
|
validators.add(new HasPrivateMethodsValidator());
|
||||||
|
|
||||||
|
for(var validator : validators) {
|
||||||
|
if(validator.validate(test_methods)) {
|
||||||
|
String name = validator.getMessage();
|
||||||
|
return new ErrorDecorator(name, aTestCommand, validator.getErrorType());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(test_methods.containsKey("Then")) {
|
if(test_methods.containsKey("Then")) {
|
||||||
ArrayList<Method> thens = getMethodsInReverseOrder(test_methods, "Then");
|
ArrayList<Method> thens = getMethodsInReverseOrder(test_methods, "Then");
|
||||||
|
|||||||
+32
@@ -0,0 +1,32 @@
|
|||||||
|
package space.kklochko.simple_jbdd.tests.factories.validators;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class EmptyValidator extends Validator {
|
||||||
|
private boolean isInvalid;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean validate(Map<String, ArrayList<Method>> methods) {
|
||||||
|
isInvalid = (methods.size() == 0);
|
||||||
|
return isInvalid;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getErrorType() {
|
||||||
|
if(!isInvalid)
|
||||||
|
return "ok";
|
||||||
|
|
||||||
|
return "Error";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getMessage() {
|
||||||
|
if(!isInvalid)
|
||||||
|
return "ok";
|
||||||
|
|
||||||
|
return "ERROR!!! No blocks!!!";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
package space.kklochko.simple_jbdd.tests.factories.validators;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
|
public class HasMethodsWithArgumentsValidator extends MethodValidator {
|
||||||
|
@Override
|
||||||
|
protected boolean isMethodInvalid(Method method) {
|
||||||
|
return method.getParameterCount() != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getMessage() {
|
||||||
|
if(!isInvalid)
|
||||||
|
return "ok";
|
||||||
|
|
||||||
|
return String.format("ERROR!!! Methods must have no arguments!!! Check methods: %s!!!", getMethodListAsString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
package space.kklochko.simple_jbdd.tests.factories.validators;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
|
public class HasNonVoidMethodsValidator extends MethodValidator {
|
||||||
|
@Override
|
||||||
|
protected boolean isMethodInvalid(Method method) {
|
||||||
|
return !method.getReturnType().equals(void.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getMessage() {
|
||||||
|
if(!isInvalid)
|
||||||
|
return "ok";
|
||||||
|
|
||||||
|
return String.format("ERROR!!! Methods must have the void type!!! Check methods: %s!!!", getMethodListAsString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
package space.kklochko.simple_jbdd.tests.factories.validators;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.lang.reflect.Modifier;
|
||||||
|
|
||||||
|
public class HasPrivateMethodsValidator extends MethodValidator {
|
||||||
|
@Override
|
||||||
|
protected boolean isMethodInvalid(Method method) {
|
||||||
|
return !Modifier.isPublic(method.getModifiers());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getMessage() {
|
||||||
|
if(!isInvalid)
|
||||||
|
return "ok";
|
||||||
|
|
||||||
|
return String.format("ERROR!!! Methods must be public!!! Check method: %s!!!", getMethodListAsString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
+48
@@ -0,0 +1,48 @@
|
|||||||
|
package space.kklochko.simple_jbdd.tests.factories.validators;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
abstract public class MethodValidator extends Validator{
|
||||||
|
protected boolean isInvalid;
|
||||||
|
|
||||||
|
protected ArrayList<Method> invalidMethods;
|
||||||
|
|
||||||
|
protected String getMethodListAsString() {
|
||||||
|
return invalidMethods.stream()
|
||||||
|
.map(m -> m.getName())
|
||||||
|
.collect(Collectors.joining(", "));
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract protected boolean isMethodInvalid(Method method);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean validate(Map<String, ArrayList<Method>> methods) {
|
||||||
|
isInvalid = false;
|
||||||
|
invalidMethods = new ArrayList<>();
|
||||||
|
|
||||||
|
for(var key : methods.keySet()) {
|
||||||
|
for(var method : methods.get(key)) {
|
||||||
|
if(isMethodInvalid(method)) {
|
||||||
|
isInvalid = true;
|
||||||
|
invalidMethods.add(method);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return isInvalid;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getErrorType() {
|
||||||
|
if(!isInvalid)
|
||||||
|
return "ok";
|
||||||
|
|
||||||
|
return "Error";
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract public String getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package space.kklochko.simple_jbdd.tests.factories.validators;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public abstract class Validator {
|
||||||
|
abstract public boolean validate(Map<String, ArrayList<Method>> methods);
|
||||||
|
abstract public String getErrorType();
|
||||||
|
abstract public String getMessage();
|
||||||
|
}
|
||||||
+66
@@ -0,0 +1,66 @@
|
|||||||
|
package space.kklochko.simple_jbdd.tests.factories.validators
|
||||||
|
|
||||||
|
import space.kklochko.simple_jbdd.test_examples.tests.HasMethodArgumentsTest
|
||||||
|
import space.kklochko.simple_jbdd.test_examples.tests.HasNonVoidMethodTest
|
||||||
|
import space.kklochko.simple_jbdd.test_examples.tests.HasPrivateMethodTest
|
||||||
|
import space.kklochko.simple_jbdd.test_examples.tests.SimpleEmptyTest
|
||||||
|
import space.kklochko.simple_jbdd.test_examples.tests.SimpleGivenWhenThenTest
|
||||||
|
import space.kklochko.simple_jbdd.tests.factories.TestCommandFactory
|
||||||
|
import spock.lang.Narrative
|
||||||
|
import spock.lang.Specification
|
||||||
|
import spock.lang.Subject
|
||||||
|
import spock.lang.Title
|
||||||
|
|
||||||
|
@Narrative("""The validators must return true if a test class is invalid, so
|
||||||
|
those tests check if validators return the right result.
|
||||||
|
""")
|
||||||
|
@Title("Integrated tests for Validators")
|
||||||
|
class IntegratedValidatorsSpec extends Specification {
|
||||||
|
def "Validator return isInvalid"() {
|
||||||
|
given: "I have a factory and metadata"
|
||||||
|
def factory = new TestCommandFactory()
|
||||||
|
def metaData = factory.getTestMethods(testClass)
|
||||||
|
|
||||||
|
when: "Validating the test"
|
||||||
|
def isInvalid = validator.validate(metaData)
|
||||||
|
|
||||||
|
then: "The status must be expected"
|
||||||
|
isInvalid == expectedStatus
|
||||||
|
|
||||||
|
where: "Possible variants of tests"
|
||||||
|
validator | testClass || expectedStatus
|
||||||
|
new HasMethodsWithArgumentsValidator() | HasMethodArgumentsTest.class || true
|
||||||
|
new HasMethodsWithArgumentsValidator() | SimpleGivenWhenThenTest.class || false
|
||||||
|
new HasNonVoidMethodsValidator() | HasNonVoidMethodTest.class || true
|
||||||
|
new HasMethodsWithArgumentsValidator() | SimpleGivenWhenThenTest.class || false
|
||||||
|
new HasPrivateMethodsValidator() | HasPrivateMethodTest.class || true
|
||||||
|
new HasMethodsWithArgumentsValidator() | SimpleGivenWhenThenTest.class || false
|
||||||
|
new EmptyValidator() | SimpleEmptyTest.class || true
|
||||||
|
new HasMethodsWithArgumentsValidator() | SimpleGivenWhenThenTest.class || false
|
||||||
|
}
|
||||||
|
|
||||||
|
def "Validator return the error message"() {
|
||||||
|
given: "I have a factory and metadata"
|
||||||
|
def factory = new TestCommandFactory()
|
||||||
|
def metaData = factory.getTestMethods(testClass)
|
||||||
|
|
||||||
|
when: "Validating the test and checking the message"
|
||||||
|
validator.validate(metaData)
|
||||||
|
def message = validator.getMessage()
|
||||||
|
|
||||||
|
then: "The message must be expected"
|
||||||
|
message == expectedMessage
|
||||||
|
|
||||||
|
where: "Possible variants of tests"
|
||||||
|
validator | testClass || expectedMessage
|
||||||
|
new HasMethodsWithArgumentsValidator() | HasMethodArgumentsTest.class || "ERROR!!! Methods must have no arguments!!! Check methods: given, setupArguments!!!"
|
||||||
|
new HasMethodsWithArgumentsValidator() | SimpleGivenWhenThenTest.class || "ok"
|
||||||
|
new HasNonVoidMethodsValidator() | HasNonVoidMethodTest.class || "ERROR!!! Methods must have the void type!!! Check methods: then!!!"
|
||||||
|
new HasMethodsWithArgumentsValidator() | SimpleGivenWhenThenTest.class || "ok"
|
||||||
|
new HasPrivateMethodsValidator() | HasPrivateMethodTest.class || "ERROR!!! Methods must be public!!! Check method: given!!!"
|
||||||
|
new HasMethodsWithArgumentsValidator() | SimpleGivenWhenThenTest.class || "ok"
|
||||||
|
new EmptyValidator() | SimpleEmptyTest.class || "ERROR!!! No blocks!!!"
|
||||||
|
new HasMethodsWithArgumentsValidator() | SimpleGivenWhenThenTest.class || "ok"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
+1
-1
@@ -22,7 +22,7 @@ class IntegratedClassLoader extends Specification {
|
|||||||
def classes = loader.load()
|
def classes = loader.load()
|
||||||
|
|
||||||
then: "Checking that the test result is expected"
|
then: "Checking that the test result is expected"
|
||||||
5 == classes.size()
|
11 == classes.size()
|
||||||
}
|
}
|
||||||
|
|
||||||
def "The classes must be represent the Test interface."() {
|
def "The classes must be represent the Test interface."() {
|
||||||
|
|||||||
+1
-1
@@ -19,7 +19,7 @@ class IntegratedNameClassLoader extends Specification {
|
|||||||
def classNames = loader.load()
|
def classNames = loader.load()
|
||||||
|
|
||||||
then: "Checking that the test result is expected"
|
then: "Checking that the test result is expected"
|
||||||
5 == classNames.size()
|
11 == classNames.size()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user