BAEL-3444: Added Cucumber data table test cases.

This commit is contained in:
Justin Albano
2019-11-14 10:05:44 -05:00
parent b46dc7a07b
commit 2319130043
12 changed files with 256 additions and 16 deletions
@@ -1,9 +1,10 @@
package com.baeldung.calculator;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
@RunWith(Cucumber.class)
@CucumberOptions(
features = {"classpath:features/calculator.feature", "classpath:features/calculator-scenario-outline.feature"}
@@ -1,13 +1,15 @@
package com.baeldung.calculator;
import com.baeldung.cucumber.Calculator;
import cucumber.api.java.Before;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
import org.hamcrest.Matchers;
import org.junit.Assert;
import com.baeldung.cucumber.Calculator;
import io.cucumber.java.Before;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
public class CalculatorRunSteps {
private int total;
@@ -0,0 +1,14 @@
package com.baeldung.cucumber.books;
import org.junit.runner.RunWith;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
@RunWith(Cucumber.class)
@CucumberOptions(features = "classpath:features/book-store.feature")
public class BookStoreIntegrationTest {
}
@@ -0,0 +1,44 @@
package com.baeldung.cucumber.books;
import java.util.Locale;
import io.cucumber.core.api.TypeRegistry;
import io.cucumber.core.api.TypeRegistryConfigurer;
import io.cucumber.datatable.DataTable;
import io.cucumber.datatable.DataTableType;
import io.cucumber.datatable.TableTransformer;
public class BookStoreRegistryConfigurer implements TypeRegistryConfigurer {
@Override
public Locale locale() {
return Locale.ENGLISH;
}
@Override
public void configureTypeRegistry(TypeRegistry typeRegistry) {
typeRegistry.defineDataTableType(new DataTableType(BookCatalog.class, new BookTableTransformer()));
}
private static class BookTableTransformer implements TableTransformer<BookCatalog> {
@Override
public BookCatalog transform(DataTable table) throws Throwable {
BookCatalog catalog = new BookCatalog();
table.cells()
.stream()
.skip(1) // Skip header row
.map(fields -> new Book(fields.get(0), fields.get(1)))
.forEach(catalog::addBook);
System.out.println(catalog);
return catalog;
}
}
}
@@ -0,0 +1,60 @@
package com.baeldung.cucumber.books;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import io.cucumber.java.Before;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
import io.cucumber.datatable.DataTable;
public class BookStoreRunSteps {
private BookStore store;
private List<Book> foundBooks;
@Before
public void setUp() {
store = new BookStore();
foundBooks = new ArrayList<>();
}
@Given("^I have the following books in the store by list$")
public void haveBooksInTheStoreByList(DataTable table) {
List<List<String>> rows = table.asLists(String.class);
for (List<String> fields: rows) {
store.addBook(new Book(fields.get(0), fields.get(1)));
}
}
@Given("^I have the following books in the store by map$")
public void haveBooksInTheStoreByMap(DataTable table) {
List<Map<String, String>> rows = table.asMaps(String.class, String.class);
for (Map<String, String> fields: rows) {
store.addBook(new Book(fields.get("title"), fields.get("author")));
}
}
@Given("^I have the following books in the store with custom table parsing$")
public void haveBooksInTheStoreByListOfDomainObjects(BookCatalog catalog) {
store.addAllBooks(catalog.getBooks());
}
@When("^I search for books by author (.+)$")
public void searchForBooksByAuthor(String author) {
foundBooks = store.booksByAuthor(author);
}
@Then("^I find (\\d+) books$")
public void findBooks(int count) {
assertEquals(count, foundBooks.size());
}
}
@@ -2,8 +2,9 @@ package com.baeldung.shopping;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
@RunWith(Cucumber.class)
@CucumberOptions(features = { "classpath:features/shopping.feature" })
@@ -1,7 +1,8 @@
package com.baeldung.shopping;
import static org.junit.Assert.assertEquals;
import cucumber.api.java8.En;
import io.cucumber.java8.En;
public class ShoppingStepsDef implements En {