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