Test methods can have parameters to receive test data from data sources, e.g. an Excel sheet. For this purpose the annotation org.aludratest.testcase.data.Source can be used. There are two different ways: to apply the annotation:
The parameters have to comply with JavaBean convention
Best compatibility and additional features are given if your data class complies with AludraTest's Data Class.
When applied to a method, each column of the data source is mapped to the primitive-typed method parameter of the same index:
import org.aludratest.testcase.AludraTestCase; import org.aludratest.testcase.data.Source; import org.aludratest.testcase.Test; @Parallel public class MyTestClass extends AludraTestCase { @Test @Source(uri="testSource.xls", segment="sheet1") public void testActivityLogic(Date date, int value) { logInfo("test data: " + date + ", " + value); } }
Alternatively a data source can be applied to a method parameter of JavaBean type. Then, data source column names are mapped to JavaBean properties. Even recursive JavaBean graphs can be constructed from a data source like an Excel sheet:
import org.aludratest.testcase.AludraTestCase; import org.aludratest.testcase.data.Source; import org.aludratest.testcase.Test; @Parallel public class MyTestClass extends AludraTestCase { @Test public void testActivityLogic(@Source(uri="testSource.xls", segment="sheet1") TestData data) { logInfo("test data: " + data); } }
A sample Excel sheet content:
name child.name parent child1 parent child2
The TestData class may be defined like this:
public class TestData { private String name; private Child child; public String getName() { return this.name; } public void setName(String name) { this.name = name; } public Child getChild() { return this.child; } public void setChild(Child child) { this.child = child; } }
with the Child class:
public class Child { private String name; public String getName() { return this.name; } public void setName(String name) { this.name = name; } }