BAEL-3444: Added Cucumber data table test cases.
This commit is contained in:
+3
-2
@@ -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"}
|
||||
|
||||
+7
-5
@@ -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;
|
||||
|
||||
+14
@@ -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 {
|
||||
|
||||
}
|
||||
|
||||
+44
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+60
@@ -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());
|
||||
}
|
||||
}
|
||||
+3
-2
@@ -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" })
|
||||
|
||||
+2
-1
@@ -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 {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user