Transcript Document
Exercises :
Testing Java with Fitnesse
Alessandro Marchetto
FBK - IRST
Exercises with Fitnesses:
1) Implement and test the “+” operator for pair of integer numbers
2) Extend the “Add” class for working with pair of double numbers
3) Extend the “Add” class for working with not a not fixed/limited
set of numbers
4) Implement and test other mathematical operators (e.g., “-”, “*”, “/”)
5) Test the CurrentAccount class
5b) Implement and a change requirement into CurrentAccount
… all the test cases must be written by using Fitnesse...
1) Implement and test the “+” operator for pairs of integer numbers
Steps
- Create an eclipse project (called “MathOperators”)
- Write a Java class called “Add” (in a packege called “math”)
that implements the sum operator between pairs of integer numbers
- In the eclipse project, create a directory called “Fitnesse”
- Add the Fitnesse library to the current eclipse project
- Start Fitnesse in the directory called “Fitnesse”
- Write acceptance test cases for testing the Java class
-- write the Fit-table(s)
use the ColumnFixture
-- write the fixture for each table
- Run the test cases, fix bugs (if any) and re-run until no bugs are
revealed
2) Extend the “Sum” class for working with pair of double numbers
… after the exercise number 1…
- Write other acceptance test cases for the class “Add” in which pairs
of double (not integer) numbers are used to exercute the implemented
Sum
use the ColumnFixture
- Run the test cases, if there are bugs fix them and re-run until no
bugs are in the class
-- To fix such bug, it is required to implement another method in the “Add”
class that reads double numbers rather than integer numbers
3) Extend the “Sum” class for working with a not limited/fixed set of
numbers
… after the exercises 1 and 2 …
- Write a new class called “AddExtended” that takes a set of numbers
(use a LinkedList<Double> as input) and returns the sum of them
- Write other test cases for exerciting the “+” operators by using a
not limited/fixed set of numbers
-- e.g., sum three/five integer/double numbers instead of just two
use the ActionFixture
- Run the test cases, if there are bugs fix them and re-run until no
bugs are in the class
4) Implement and test other mathematical operators (e.g.,“-”, “*”,
“/”)
… after the exercises 1,2 and 3 …
- In mat, write a new Java class called “Subtract” that implements the
subtraction between numbers
-Write acceptance test cases for the “Subtract” class
- In mat, write a new Java class called “Multiply” that implements the
multiplication between numbers
- Write acceptance test cases for the “Multiply” class
- In mat, write a new Java class called “Divide” that implements the
division between numbers
- Write acceptance test cases for the “Divide” class
5) Test the CurrentAccount class
- Given the following CurrentAccount class:
…. public int settlement() {
int result = 0;
for (int i=0; i<account.length; i++) {
result = result +
class CurrentAccount {
int account[];
int lastMove;
CurrentAccount() {
lastMove = 0;
account = new int[10];
}
public void deposit(int value) {
account[lastMove] = value;
lastMove++;
}
public void draw(int value) {
account[lastMove] = value;
lastMove++;
}
……
account[i];
}
return result;
}
public static void main(String args[]) {
CurrentAccount c = new
CurrentAccount();
c.deposit(10);
}
}
5) Test the CurrentAccount class
- Create a new eclipse project called “CurrentAccount”
- Create the class “CurrentAccount” in a package “bankAccount”
- Run it, and try to understand the behavior of such class
- identify the most relevant functionality implement
- for each one, identify meaningful execution scenarios
- for each scenario, identify sets of meaningful inputs that can exercise the
functionality of the class
- Write acceptance test cases for such class
- To do this use the execution scenarios and the meaningful inputs
- Run the test cases, fix bugs (if any) and re-run until no bugs are
revealed
-Implement the following change requirements: “changing the data
structure used in the class: Array --> List”
- re-Run the test cases, fix bugs (if any) and re-run until no bugs are
revealed
5) Test the CurrentAccount class
- verify that your test suite include at least the following cases:
* test cases for testing just the deposit operation
it must be possible to deposit positive amount of money
it must be forbidden to deposit negative amount of money
ColumnFixture
* test cases for testing just the draw operation
it must be possible to draw negative amount of money
e.g., it must be forbidden to draw positive amount of money
use the ColumnFixture
* test cases for testing just the settlement operation
it depends on the other operations
call settlment after short (<10) and long (>30) sequences of other operations
before calling the settlment operation
use the ActionFixture
* test cases for testing sequences of the previous operations
5b) Implement a change requirement into CurrentAccount
- Implement and test the following change requirement:
* Add a class called “CollectionOfAccounts”
it contains a list of account (“LinkedList<CurrentAccount>”)
it has a method to add account to this list
it has a method to get the account number X in the list
- Notice that X in an integer read from the user (0<X<list.size)
it has a method to get the accounts in the list from 0 to X. In other terms the
method returns the first X accounts that are in the list
- Notice that X in an integer read from the user (0<X<list.size)
- The set of X accounts must be returned into a collection of type:
“Collection<CurrentAccount>”
* Write test cases for the new class
Initialize the list with 3 account class (with respectively 10, 20, 30 as initial
deposit)
Test each method of the class
ActionFxture and RowFixture