Giriş
Testin her parametre için ayrı ayrı koşmasını sağlar. Test sınıfının her parametreyi alan bir constructor metodu bulunur.
Örnek
Testin her parametre için ayrı ayrı koşmasını sağlar. Test sınıfının her parametreyi alan bir constructor metodu bulunur.
Örnek
Elimizde şöyle bir kod olsun
public class CalculatorImpl implements Calculator {@Overridepublic double process(String expression) {...}}
Test verisi için şöyle yaparız. Birinci değer girdi string, ikinci değer sonuç, üçündü değer eper varsa exception'dır
@RunWith(Parameterized.class)public class CalculatorTest {@Parameters(name = "{index}: CalculatorTest({0})={1}, throws {2}")public static Collection<Object[]> data() {return Arrays.asList(new Object[][]{{"1 + 1", 2, null},{"1 + 1 + 1", 3, null},{"1–1", 0, null},{"1 * 1", 1, null},{"1 / 1", 1, null},{"( 1 + 1 )", 2, null},{"+", 0, new CalculatorException("Invalid expression: +")},{"1 1", 0, new CalculatorException("Invalid expression: 1 1")}});}private final String input;private final double expected;private final Exception exception;public CalculatorTest(String input, double expected, Exception exception) {this.input = input;this.expected = expected;this.exception = exception;}...}
Test için şöyle yaparız
@Testpublic void testProcess() {Calculator c = new CalculatorImpl();try {double result = c.process(input);if (exception != null) {fail("should have thrown an exception: " + exception);}// shouldn't compare doubles without a delta, because FP math isn't accurateassertEquals(expected, result, 0.000001);} catch (Exception e) {if (exception == null) {fail("should not have thrown an exception, but threw " + e);}if (!exception.getClass().equals(e.getClass()) ||
!exception.getMessage().equals(e.getMessage())) {fail("expected exception " + exception + "; got exception " + e);}}}
Bu örnekte her test 1 ve 2 değerleri için koşar. Şöyle yaparız.
@RunWith(value = Parameterized.class)
public class MyTest {
private int value;
@Parameterized.Parameters
public static List<Object[]> data() {
return Arrays.asList(new Object[][]{
{1},
{2},
});
}
public MyTest(int value) {
this.value = value;
}
@Test
public void test1() {
...
}
@Test
public void test2() {
...
}
}
Hiç yorum yok:
Yorum Gönder