Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f384ce5fe5 | ||
|
|
5c1e69ed32 | ||
|
|
2e12fdbd34 | ||
|
|
95a29a14fe | ||
|
|
d69cf31964 |
@@ -0,0 +1,12 @@
|
||||
package space.kklochko.simple_jbdd.test_examples.tests;
|
||||
|
||||
import space.kklochko.simple_jbdd.annotations.Title;
|
||||
import space.kklochko.simple_jbdd.tests.Test;
|
||||
|
||||
@Title("A Simple Empty Test for Sum")
|
||||
public class SimpleEmptyTest extends Test {
|
||||
public void check() {
|
||||
assert 30 == 10 + 20 + 1;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ import space.kklochko.simple_jbdd.annotations.Title;
|
||||
import space.kklochko.simple_jbdd.tests.Test;
|
||||
|
||||
|
||||
@Title("A Simple Failed GivenWhenTest for Sum")
|
||||
@Title("A Simple Failed Then Test for Sum")
|
||||
public class SimpleFailedThenTest extends Test {
|
||||
@Then
|
||||
public void check() {
|
||||
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
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.Sum;
|
||||
import space.kklochko.simple_jbdd.tests.Test;
|
||||
|
||||
@Title("A Simple GivenGivenWhenWhenThenThen Test for Sum")
|
||||
public class SimpleGivenGivenWhenWhenThenThenTest extends Test {
|
||||
private Sum sum;
|
||||
private int a;
|
||||
private int b;
|
||||
private int c;
|
||||
private int resultAB;
|
||||
private int resultCB;
|
||||
|
||||
@Given("Create the Sum object")
|
||||
void setup() {
|
||||
sum = new Sum();
|
||||
}
|
||||
|
||||
@Given("Setup the arguments")
|
||||
void setupArgs() {
|
||||
a = 10;
|
||||
b = 20;
|
||||
c = 30;
|
||||
}
|
||||
|
||||
@When("Call the .sum(10, 20)")
|
||||
void triggerAB() {
|
||||
resultAB = sum.sum(a, b);
|
||||
}
|
||||
|
||||
@When("Call the .sum(30, 20)")
|
||||
void triggerCB() {
|
||||
resultCB = sum.sum(c, b);
|
||||
}
|
||||
|
||||
@Then("10 + 20 is 30")
|
||||
void checkAB() {
|
||||
assert 30 == resultAB;
|
||||
}
|
||||
|
||||
@Then("30 + 20 is 50")
|
||||
void checkCB() {
|
||||
assert 50 == resultCB;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ import space.kklochko.simple_jbdd.annotations.When;
|
||||
import space.kklochko.simple_jbdd.test_examples.samples.Sum;
|
||||
import space.kklochko.simple_jbdd.tests.Test;
|
||||
|
||||
@Title("A Simple GivenWhenTest for Sum")
|
||||
@Title("A Simple GivenWhenThen Test for Sum")
|
||||
public class SimpleGivenWhenThenTest extends Test {
|
||||
private Sum sum;
|
||||
private int a;
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
package space.kklochko.simple_jbdd.tests.commands.decorators;
|
||||
|
||||
import space.kklochko.simple_jbdd.tests.Test;
|
||||
import space.kklochko.simple_jbdd.tests.commands.AbstractTestCommand;
|
||||
|
||||
public class ErrorDecorator<T extends Test> extends AbstractDecorator<T> {
|
||||
public ErrorDecorator(String error_label, AbstractTestCommand<T> command, String type) {
|
||||
super(error_label, command);
|
||||
setType(type);
|
||||
}
|
||||
|
||||
public boolean test() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean runMethod() {
|
||||
return false;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import space.kklochko.simple_jbdd.tests.Test;
|
||||
import space.kklochko.simple_jbdd.tests.commands.AbstractTestCommand;
|
||||
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.ErrorDecorator;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Method;
|
||||
@@ -20,6 +21,9 @@ public class TestCommandFactory {
|
||||
|
||||
AbstractTestCommand<Test> aTestCommand = createTest(aClass, input);
|
||||
|
||||
if(test_methods.size() == 0)
|
||||
return new ErrorDecorator("ERROR!!! No blocks!!!", aTestCommand, "Error");
|
||||
|
||||
if(test_methods.containsKey("Then")) {
|
||||
ArrayList<Method> thens = getMethodsInReverseOrder(test_methods, "Then");
|
||||
for(Method then : thens) {
|
||||
|
||||
+26
-27
@@ -1,5 +1,7 @@
|
||||
package space.kklochko.simple_jbdd.tests.factories
|
||||
|
||||
import space.kklochko.simple_jbdd.test_examples.tests.SimpleEmptyTest
|
||||
import space.kklochko.simple_jbdd.test_examples.tests.SimpleGivenGivenWhenWhenThenThenTest
|
||||
import space.kklochko.simple_jbdd.test_examples.tests.SimpleGivenWhenThenTest
|
||||
import space.kklochko.simple_jbdd.test_examples.tests.SimpleThenTest
|
||||
import space.kklochko.simple_jbdd.test_examples.tests.SimpleThenTestWithoutTitle
|
||||
@@ -14,19 +16,28 @@ those tests check if factory generate them right.
|
||||
""")
|
||||
@Title("Unit tests for TestCommandFactory")
|
||||
class TestCommandFactorySpec extends Specification {
|
||||
def "If the map of methods have one test block."() {
|
||||
def "The command have the same block count."() {
|
||||
given: "I have a TestCommandFactory object"
|
||||
@Subject
|
||||
def factory = new TestCommandFactory();
|
||||
|
||||
and: "I also have a SimpleThenTest object"
|
||||
def simpleThenTest = new SimpleThenTest()
|
||||
when: "If a test command have blocks"
|
||||
def map = factory.getTestMethods(testClass.getClass())
|
||||
|
||||
when: "If a test have only one block"
|
||||
def map = factory.getTestMethods(simpleThenTest.getClass())
|
||||
def count = map.values()
|
||||
.stream()
|
||||
.map {it.size()}
|
||||
.reduce(0) { acc, num -> acc + num }
|
||||
|
||||
then: "the map size is 1 method"
|
||||
1 == map.size()
|
||||
then: "the command have the expected block count"
|
||||
expectedBlockCount == count
|
||||
|
||||
where:
|
||||
testClass || expectedBlockCount
|
||||
new SimpleEmptyTest() || 0
|
||||
new SimpleThenTest() || 1
|
||||
new SimpleGivenWhenThenTest() || 3
|
||||
new SimpleGivenGivenWhenWhenThenThenTest() || 6
|
||||
}
|
||||
|
||||
def "createTest() sets the title to a class name if no Title annotation."() {
|
||||
@@ -63,34 +74,22 @@ class TestCommandFactorySpec extends Specification {
|
||||
title == test.getLabels()['Title']
|
||||
}
|
||||
|
||||
def "createTest() build a Test with only Then."() {
|
||||
def "createTest() build a TestCommand that contains the expected blocks."() {
|
||||
given: "I have a test factory"
|
||||
@Subject
|
||||
def factory = new TestCommandFactory()
|
||||
|
||||
and: "I have a test class with Title"
|
||||
def testClass = new SimpleThenTest()
|
||||
|
||||
when: "I build a test"
|
||||
def test = factory.create(testClass)
|
||||
|
||||
then: "The test have title and then method"
|
||||
['Title', 'Then'].toSet() == test.getLabels().keySet()
|
||||
}
|
||||
then: "The test have the expected blocks"
|
||||
expectedBlocks.toSet() == test.getLabels().keySet()
|
||||
|
||||
def "createTest() build a Test with Given-When-Then."() {
|
||||
given: "I have a test factory"
|
||||
@Subject
|
||||
def factory = new TestCommandFactory()
|
||||
|
||||
and: "I have a test class with Title and Given-When-Then"
|
||||
def testClass = new SimpleGivenWhenThenTest()
|
||||
|
||||
when: "I build a test"
|
||||
def test = factory.create(testClass)
|
||||
|
||||
then: "The test have title and then method"
|
||||
['Title', 'Given', 'When', 'Then'].toSet() == test.getLabels().keySet()
|
||||
where:
|
||||
testClass || expectedBlocks
|
||||
new SimpleThenTest() || ['Title', 'Then']
|
||||
new SimpleGivenWhenThenTest() || ['Title', 'Given', 'When', 'Then']
|
||||
new SimpleGivenGivenWhenWhenThenThenTest() || ['Title', 'Given', 'When', 'Then']
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ class IntegratedClassLoader extends Specification {
|
||||
def classes = loader.load()
|
||||
|
||||
then: "Checking that the test result is expected"
|
||||
3 == classes.size()
|
||||
5 == classes.size()
|
||||
}
|
||||
|
||||
def "The classes must be represent the Test interface."() {
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ class IntegratedNameClassLoader extends Specification {
|
||||
def classNames = loader.load()
|
||||
|
||||
then: "Checking that the test result is expected"
|
||||
3 == classNames.size()
|
||||
5 == classNames.size()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+9
-5
@@ -1,6 +1,8 @@
|
||||
package space.kklochko.simple_jbdd.tests.runners
|
||||
|
||||
import space.kklochko.simple_jbdd.test_examples.tests.SimpleEmptyTest
|
||||
import space.kklochko.simple_jbdd.test_examples.tests.SimpleFailedThenTest
|
||||
import space.kklochko.simple_jbdd.test_examples.tests.SimpleGivenGivenWhenWhenThenThenTest
|
||||
import space.kklochko.simple_jbdd.test_examples.tests.SimpleGivenWhenThenTest
|
||||
import space.kklochko.simple_jbdd.test_examples.tests.SimpleThenTest
|
||||
import space.kklochko.simple_jbdd.test_examples.tests.SimpleThenTestWithoutTitle
|
||||
@@ -33,10 +35,12 @@ class IntegratedSimpleTestRunnerSpec extends Specification {
|
||||
result == expectedResult
|
||||
|
||||
where: "Possible variants of tests"
|
||||
testObject || expectedResult
|
||||
new SimpleThenTest() || true
|
||||
new SimpleGivenWhenThenTest() || true
|
||||
new SimpleThenTestWithoutTitle() || true
|
||||
new SimpleFailedThenTest() || false
|
||||
testObject || expectedResult
|
||||
new SimpleThenTest() || true
|
||||
new SimpleGivenWhenThenTest() || true
|
||||
new SimpleThenTestWithoutTitle() || true
|
||||
new SimpleFailedThenTest() || false
|
||||
new SimpleGivenGivenWhenWhenThenThenTest() || true
|
||||
new SimpleEmptyTest() || false
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user