Included page: .Fit Nesse .User Guide .Sli M .Set Up (edit)

setup

import
fitnesse.slim.test
fitnesse.fixtures


The rows in a query table represent the expected results of a query.
You can specify them precisely if you like as in the following:

Query:employees hired before 10-Dec-1980
employee number first name last name hire date
1429 Bob Martin 10-Oct-1975
9924 Bill Mitchell 19-Dec-1966

Or you can leave cells blank and allow them to be filled in:

Query:employees hired before 10-Dec-1980
employee number first name last name hire date
1429
8832

The code for the fixture is:
package fitnesse.slim.test;

import static fitnesse.util.ListUtility.list;

import java.util.Date;
import java.util.List;

public class EmployeesHiredBefore {
  private Date date;

  public EmployeesHiredBefore(Date date) {
    this.date = date;
  }

  public void table(List<List<String>> table) {
    //optional function
  }

  public List<Object> query() {

    return
      list(
        list(
          list("employee number", "1429"),
          list("first name", "Bob"),
          list("last name", "Martin"),
          list("hire date", "10-Oct-1974")
        ),
        list(
          list("employee number", "8832"),
          list("first name", "James"),
          list("last name", "Grenning"),
          list("hire date", "15-Dec-1979")
        )
      );
  }
} 

Note the list function simply builds an ArrayList from it's arguments. It's in the ListUtility class

The first thing to notice is the Query: in the first cell of the table. This tells the Slim table processor that this is a query table. Next notice the constructor argument. (See Constructor Arguments). The column headers are field names. The fixture class must have a query method that returns a list of rows. Each row is a list of fields. Each field is a two-element list composed of the field name and it's string value.

Each row in the table is checked to see if there is a match in the query response. The fields are matched left to right. If the leftmost field matches, then the row is considered to be "found". Fields that don't matche are marked in error as in the 10-Oct-1974 field above. A cell that is left blank in the table will be filled in from the result and counted as ignored. If the first cell of a row cannot be matched, then the row is considered missing. If there is an unmatched row remaining in the query response, it is added to the table and marked surplus. The order of the rows is irrelevant.

If a table method is declared in the fixture it will be called before the query function is called. It will be passed a list of rows which are themselves lists of cells. The rows and cells represent the all but the first row of the table. This is the same format at the doTable method of Table table, and the table method of Decision table.

Keyboard Shortcuts ?

×
  • t Test
  • e Edit page
  • a Add new page
  • p Properties
  • w Where used?
  • / Focus on search bar
  • s Open search page
  • g u Go to User Guide