44 lines
1.4 KiB
Plaintext
44 lines
1.4 KiB
Plaintext
!3 Designing Tests with ColumnFixture
|
|
Think of each row of a ColumnFixture as one or more function calls. The values of the named variables are set, and then the functions are called.
|
|
|
|
For example, lets say you were writing an inventory system, and you wanted to test its ability to keep track of stocked items. You might write tables like this:
|
|
|
|
|!-inventory.AddStockFixture-!|
|
|
|partNumber|quantity|valid?|
|
|
|324|28|true|
|
|
|586|14|true|
|
|
|
|
This test adds two stock items. The valid() function calls the parts of the system that cause a stock item to be added. The code for the !-AddStockFixture-! might look like this:{{{
|
|
package inventory;
|
|
import fit.ColumnFixture;
|
|
public class AddStockFixture extends ColumnFixture {
|
|
public int partNumber;
|
|
public int quantity;
|
|
public boolean valid() {
|
|
try {
|
|
StockItem item = new StockItem(partNumber);
|
|
Inventory.addStockItem(item,quantity);
|
|
return true;
|
|
} catch (Exception e) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}}}Next, we might write a table that simulates some purchases that reduce the stock of an item.
|
|
|
|
|!-inventory.PurchaseItemFixture-!|
|
|
|partNumber|quantity|valid?|
|
|
|324|3|true|
|
|
|586|2|true|
|
|
|
|
It should be clear how this fixture would be written.
|
|
|
|
Finally we'd write a table that checked to make sure that the inventory had been properly updated.
|
|
|
|
|!-inventory.CheckInventoryFixture-!|
|
|
|partNumber|quantity()|
|
|
|324|25|
|
|
|586|12|
|
|
|
|
See how easy this is?
|