Index
A
- acceptance test-driven development (ATDD)
- AfterStories
- about / Pending steps
- Apache Ant
- URL / JBehave runner
- Art of Unit Testing
- AssertJ
- defining / Hamcrest and AssertJ
- about / AssertJ
B
- Bamboo
- BDD
- Cucumber / Cucumber
- about / Behavior-driven development
- narrative / Narrative
- scenarios / Scenarios
- BeforeStories
- about / Pending steps
- behavior-driven development / Behavior-driven development
- behavior-driven development (BDD)
- best practices, TDD
- defining / Best practices
- naming conventions / Naming conventions
- processes / Processes
- development practices / Development practices
- tools / Tools
- Bitbucket
- URL / Git
- black-box testing
- about / The black-box testing, Black-box or spike testing
- advantages / The black-box testing
- disadvantages / The black-box testing
- URL / Black-box or spike testing
- Books Store BDD story
- about / The Books Store BDD story
- URL / The Books Store BDD story
- branch
- URL / Final validation
- build tools
- defining / Build tools
- URL / Build tools
C
- cachier
- Clover
- URL / Tools
- Cobertura
- URL / Tools
- code coverage tools
- defining / Code coverage tools
- JaCoCo / JaCoCo
- using / Code coverage
- about / Code coverage
- URL / Code coverage
- code refactoring
- about / Code refactoring
- Code smell
- about / Legacy code
- URL / Legacy code
- Community Edition (IntelliJ IDEA CE)
- complete source code
- references / TestNG
- Connect4
- about / Connect4
- URL / Connect4
- requisites / Requirements
- implementing / Test the last implementation of Connect4
- Continuous Delivery (CD)
- Continuous Deployment (CD)
- Continuous Integration (CI)
- coverage
- about / Legacy code example
- URL / Legacy code example
- Cucumber
- curl
D
- Dallas Hack Club
- DbUnit
- debugging
- avoiding / No debugging
- design
- need for / Why should we care about design?
- design principles
- about / Design principles
- YAGNI / You Ain't Gonna Need It
- DRY / Don't Repeat Yourself
- KISS / Keep It Simple, Stupid
- Occam's razor / Occam's Razor
- SOLID / SOLID
- distributions, Git
- URL / Git
- Docker
- about / Docker
- documentation
- executing / Executable documentation
- Don't Repeat Yourself / Don't Repeat Yourself
- drivers
- URL / Selenium and Selenide
- DRY
- about / Don't Repeat Yourself
- URL / Don't Repeat Yourself
E
- EasyMock
- about / EasyMock
- End2End (E2E)
- about / Specification
- environment
- setting up, with Gradle / Setting up the environment with Gradle and JUnit
- setting up, with JUnit / Setting up the environment with Gradle and JUnit
- Extract and Override Call
- about / Breaking dependencies
- extract and override call technique
- constructor, parameterizing / Parameterizing a constructor
- new feature, adding / Adding a new feature
- extreme programming (XP)
- about / Red-green-refactor
- Extreme Programming (XP) values
- URL / Unit testing
F
- Fake test double
- URL / Technical comments
- Feature Toggle
- about / Feature Toggles
- using / Feature Toggles
- example / A Feature Toggle example
- Fibonacci service, implementing / Implementing the Fibonacci service
- template engine, defining / Working with the template engine
- Fibonacci sequence
- frameworks
- mocking / Mocking frameworks
- references / Mocking frameworks
- Mockito / Mockito
- EasyMock / EasyMock
- FriendshipsAssertJTest class
- URL / AssertJ
- FriendshipsHamcrestTest class
- URL / Hamcrest
- FriendshipsMongoAssertJTest class
- references / Mockito
- functional and acceptance tests
G
- Git
- about / Git
- Git repository
- Gradle
- URL / Build tools, The IDEA demo project
- environment, setting up / Setting up the environment with Gradle and JUnit
- Gradle/Java project
- setting up, in IntelliJ IDEA / Setting up Gradle/Java project in IntelliJ IDEA
- Grizzly
H
- Hamcrest
- defining / Hamcrest and AssertJ
- about / Hamcrest
- URL / Hamcrest
- Hudson
I
- IDEA demo project
- about / The IDEA demo project
- implementation, Connect4
- requisites / Requirement 1, Requirement 3, Requirement 5, Requirement 6, Requirement 7, Requirement 8
- URL / Requirement 8
- Integrated development environment
- integration tests
- about / Why not use unit tests exclusively?, The integration test
- defining / Integration tests
- tests separation / Tests separation
- IntelliJ IDEA
- Gradle/Java project, setting up / Setting up Gradle/Java project in IntelliJ IDEA
J
- JaCoCo
- Java build tools
- references / Build tools
- JBehave
- URL / The Books Store BDD story
- about / JBehave
- runner / JBehave runner
- running, with Gradle / Pending steps
- Selenium / Selenium and Selenide
- Selenide / Selenium and Selenide
- PhantomJS browser, installing / JBehave steps
- final validation / Final validation
- Jenkins
- Jongo
- about / Mocking frameworks
- JUnit
- about / Unit testing frameworks, JUnit
- URL / JUnit, TestNG, TestNG vs JUnit summary
- references / JUnit
- environment, setting up / Setting up the environment with Gradle and JUnit
- JUnit assert
- comparing, with Hamcrest assert / Hamcrest
K
- Kata exercise
- about / The Kata exercise
- legacy Kata / Legacy Kata
- description / Description
- technical comments / Technical comments
- new feature, adding / Adding a new feature
- black-box testing / Black-box or spike testing
- Spike testing / Black-box or spike testing
- preliminary investigation / Preliminary investigation, Introducing the new feature
- legacy code algorithm, applying / Applying the legacy code algorithm
- extract and override call technique / Extract and override call
- primitive obsession, removing with status as Int / Removing the primitive obsession with status as Int
- Keep It Simple Stupid / Keep It Simple, Stupid
- keep it simple stupid (KISS)
- about / Development practices
- KISS
- about / Keep It Simple, Stupid
- URL / Keep It Simple, Stupid
- KISS (Keep It Simple Stupid)
- about / Unit testing with TDD
L
- legacy code
- defining / Legacy code
- example / Legacy code example
- recognizing / Other ways to recognize legacy code
- lack, of dependency injection / A lack of dependency injection
- change algorithm / The legacy code change algorithm
- legacy code algorithm
- about / Applying the legacy code algorithm
- end-to-end test cases, writing / Writing end-to-end test cases
- test cases, automating / Automating the test cases
- BookRepository dependency, injecting / Injecting the BookRepository dependency
- legacy code change algorithm
- about / The legacy code change algorithm
- applying / Applying the legacy code change algorithm, Finding test points, Breaking dependencies
- change points, identifying / Identifying change points
- test points, finding / Finding test points
- break dependencies / Breaking dependencies
- tests, writing / Writing tests
- legacyutils
- URL / Finding test points
M
- Maven Central
- URL / Build tools
- methods, Mockito
- Minimum Viable Product (MVP)
- about / Narrative
- mocking
- Mockito
- mock objects
- defining / Mock objects
- mocks
- using / Mocking, Why mocks?
- MongoDB
- URL / Mocking frameworks
- MongoDB driver
- about / Mocking frameworks
N
- narrative, BDD
- goals / Narrative
O
- Occam's razor
- about / Occam's Razor
- URL / Occam's Razor
P
- Parameterize Constructor technique
- URL / Breaking dependencies
- partial mocking
- about / Specification
- pattern
- URL / Breaking dependencies
- PhantomJS browser
- URL / JBehave steps
- ping pong game
- defining / Speed is the key
- Postman
- preliminary investigation
- candidates, finding for refactoring / How to find candidates for refactoring
- new feature, defining / Introducing the new feature
- primitive obsession
- Product Owner (PO)
Q
- quality assurance (QA)
- quality checking (QC)
- query
- URL / A Feature Toggle example
R
- README, in markdown format
- URL / Documentation for coders
- red-green-refactor / Red-green-refactor
- about / TDD in a nutshell
- red-green-refactor process
- about / The red-green-refactor process
- test, writing / Write a test
- all tests, running / Run all the tests and confirm that the last one is failing, Run all the tests
- implementation code, writing / Write the implementation code
- refactoring / Refactor
- repeat / Repeat
- remote controlled ship
- requirements / Remote controlled ship requirements, Requirement 1, Specification, Refactoring, Specification, Specification implementation, Specification implementation, Specification, Specification implementation, Specification implementation, Specification, Refactoring, Specification, Requirement 6
- developing / Developing the remote-controlled ship
- project, setting up / Project setup
- helper classes / Helper classes
- RestAssured
- REST service
- about / A Feature Toggle example
- Rule
- about / Requirement 1
- URL / Requirement 1
S
- Selenide
- URL / Selenium and Selenide
- Selenium
- URL / Selenium and Selenide
- setup method
- using / Refactoring
- Single Responsibility Principle
- SOLID
- Source Tree
- URL / Git
- specifications, TDD
- defining / Different specifications
- documentation / Documentation
- documentation, for coders / Documentation for coders
- documentation, for non-coders / Documentation for non-coders
- spring-boot
- about / A Feature Toggle example
- spring-boot and related projects
- URL / A Feature Toggle example
- strategy pattern
- system under test (SUT)
- about / Terminology
T
- TDD
- using / Why TDD?
- benefits / Why TDD?, TDD in a nutshell
- defining / Understanding TDD, It's not about testing, TDD in a nutshell
- red-green-refactor / Red-green-refactor
- about / The white-box testing, Executable documentation, This is just the beginning
- tdd-java-ch04-ship repository
- tdd-java-ch06-tic-tac-toe-mongo Git repository
- TDD implementation, Connect4
- about / The TDD implementation of Connect4
- Hamcrest / Hamcrest
- requisites / Requirement 1, Code, Tests, Code, Requirement 3, Requirement 4, Code, Requirement 5, Tests, Tests, Code
- teardown method
- using / Refactoring
- terminology
- defining / Terminology
- test doubles
- testing
- about / Testing
- black-box testing / The black-box testing
- white-box testing / The white-box testing
- quality checking and quality assurance, comparing / The difference between quality checking and quality assurance
- performing / Better tests
- test methods
- benefits / Requirement 1
- TestNG
- about / Unit testing frameworks, TestNG, TestNG
- URL / TestNG, TestNG vs JUnit summary
- @Test annotation / The @Test annotation
- @BeforeSuite annotation / The @BeforeSuite, @BeforeTest, @BeforeGroups, @AfterGroups, @AfterTest, and @AfterSuite annotations
- @BeforeTest annotation / The @BeforeSuite, @BeforeTest, @BeforeGroups, @AfterGroups, @AfterTest, and @AfterSuite annotations
- @BeforeGroups annotation / The @BeforeSuite, @BeforeTest, @BeforeGroups, @AfterGroups, @AfterTest, and @AfterSuite annotations
- @AfterGroups annotation / The @BeforeSuite, @BeforeTest, @BeforeGroups, @AfterGroups, @AfterTest, and @AfterSuite annotations
- @AfterTest annotation / The @BeforeSuite, @BeforeTest, @BeforeGroups, @AfterGroups, @AfterTest, and @AfterSuite annotations
- @AfterSuite annotation / The @BeforeSuite, @BeforeTest, @BeforeGroups, @AfterGroups, @AfterTest, and @AfterSuite annotations
- @BeforeClass annotation / The @BeforeClass and @AfterClass annotations
- @AfterClass annotation / The @BeforeClass and @AfterClass annotations
- @BeforeMethod annotation / The @BeforeMethod and @AfterMethod annotations
- @AfterMethod annotation / The @BeforeMethod and @AfterMethod annotations
- @Test(enable = false) annotation argument / The @Test(enable = false) annotation argument
- @Test(expectedExceptions = SomeClass.class) annotation argument / The @Test(expectedExceptions = SomeClass.class) annotation argument
- versus JUnit / TestNG vs JUnit summary
- features / TestNG vs JUnit summary
- Thymeleaf
- about / A Feature Toggle example
- URL / A Feature Toggle example
- Tic-Tac-Toe game
- references / Setting up Gradle/Java project in IntelliJ IDEA
- defining / The Tic-Tac-Toe game requirements
- requirements / The Tic-Tac-Toe game requirements
- URL / The Tic-Tac-Toe game requirements, More exercises
- developing / Developing Tic-Tac-Toe
- requisites / Requirement 1, Test, Implementation, Test, Refactoring, Requirement 2, Implementation, Test, Test, Refactoring, Implementation, Implementation, Refactoring, Refactoring
- Tic-Tac-Toe v2
- requisites / The Tic-Tac-Toe v2 requirements, Requirement 1, Specification and specification implementation, Specification, Refactoring, Specification, Specification implementation, Specification implementation, Specification, Specification, Specification, Requirement 2, Specification refactoring, Specification, Specification implementation, Specification, Specification implementation
- developing / Developing Tic-Tac-Toe v2
- URL / Developing Tic-Tac-Toe v2
- TicTacToeInteg class
- creating / The integration test
- Togglz
- URL / Feature Toggles
- Tortoise
- URL / Git
- Tower
- URL / Git
- Travis
U
- unit testing
- about / Unit testing
- defining / What is unit testing?
- need for / Why unit testing?
- benefits / Code refactoring
- using / Why not use unit tests exclusively?
- with TDD / Unit testing with TDD
- unit testing (UT)
- about / What is unit testing?
- unit testing frameworks
- about / Unit testing frameworks
- JUnit / JUnit
- TestNG / TestNG
- unit tests
- user acceptance tests
V
- Vagran file
- about / Vagrant
- Vagrant
- VirtualBox
- URL / Vagrant
- virtual machines
- about / Virtual machines
- Vagrant / Vagrant
- Docker / Docker
W
- white-box testing
- advantages / The white-box testing
- disadvantages / The white-box testing
Y
- YAGNI
- about / You Ain't Gonna Need It
- URL / You Ain't Gonna Need It
- You Ain't Gonna Need It / You Ain't Gonna Need It