basic given when then test helper [Java 8]
Add the following maven dependecy (Sample for version 0.1.2):
  <dependency>
    <groupId>com.rabriel</groupId>
    <artifactId>given-when-then</artifactId>
    <version>0.1.2</version>
  </dependency>import static com.rabriel.GivenWhenThen.given;
@Test
public void basicFlowTest() {
 given(1)
  .when("multiplying by 2", givenValue -> 2 * givenValue)
  .then("value should be even", whenValue -> whenValue % 2 == 0);
}
@Test
public void basicMultiWhenFlowTest() {
 given(1)
  .when("multiplying by 2", givenValue -> 2 * givenValue)
  .when("High squared", givenValue -> 2 * givenValue)
  .then("value should be a square", whenValue -> whenValue == Math.pow(Math.sqrt(whenValue), 2));
}
@Test
public void multiTypeFlowTest() {
 LocalDateTime localDateTime = LocalDateTime.now();
 DayOfWeek expectedDay = localDateTime.getDayOfWeek();
 given(localDateTime)
  .when("retrieving current day", date -> date.getDayOfWeek())
  .then("days should match", day -> expectedDay == day);
}
@Test
public void assertFlowTest() {
 Integer primeNumber = 17;
 given("a prime number", primeNumber)
  .when("finding dividers naively", number -> IntStream.rangeClosed(1, number)
   .boxed().filter(value -> number % value == 0).collect(Collectors.toList()))
  .then(dividers -> {
   assertEquals("should have two dividers", 2, dividers.size());
   assertEquals("first divider should be 1", 1, (int) dividers.get(0));
   assertEquals(String.format("first divider should be %d", primeNumber), primeNumber, dividers.get(1));
  });
}
@Test
public void basicGivenFutureFlowTest() {
 given(executor.submit(() -> 1))
  .when("multiplying by 2", givenValue -> 2 * givenValue)
  .then("value should be even", whenValue -> whenValue % 2 == 0);
}A Functional Approach to Given When Then Using Java 8
Javascript version: given-when-then-js
Strategy & Technology (http://www.s-and-t.com/) for allowing the project to start.