таблица огурцов с правильным и недействительным вводом - PullRequest
0 голосов
/ 28 мая 2018

У меня есть такой тест, который работает:

Feature: TestAddition

  Scenario Outline: "Addition"
    Given A is <A> and B is <B>
    Then A + B is <result>

    Examples: 
      | A      | B    | result |
      |      3 |    4 |      7 |
      |      2 |    5 |      7 |
      |      1 |    4 |      5 |

И вот код клея:

package featuresAdditions;

import org.junit.Assert;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import math.AdditionEngine;

public class step {

    private AdditionEngine testAdditionEngine;
    private double resultAddition;

    @Given("^A is (\\d+) and B is (\\d+)$")
    public void addition(int arg1, int arg2) throws Throwable {
        testAdditionEngine = new AdditionEngine();
        resultAddition = testAdditionEngine.calculateAdditionAmount(arg1, arg2);
        }


    @Then("^A + B is (.)$")
    public void addition(double arg1) throws Throwable {
        Assert.assertEquals(arg1, resultAddition, 0.01);
    }      
}

Однако я хотел бы знать, как создать недопустимый пример таблицы [где ??означает, что я не знаю, что положить в приведенную ниже таблицу]

Examples: 
  | A      | B    | result |
  | "é3-3" |    5 |     ?? |
  | "é3-3" | "aB" |     ?? |

Это должно дать java.lang.NumberFormatException

В чистом jUnit я бы сделал что-то вроде кода ниже, который работает какочарование [с @Test(expected = NumberFormatException.class)].Тем не менее, я должен использовать Cucumber ... Кто-то может сказать мне, как выполнить такой тест с Cucubmer?

public class test {
    AdditionEngine testAdditionEngine = new AdditionEngine();
    @Test(expected = NumberFormatException.class)
    public void test() {
        testAdditionEngine.calculateAdditionAmount("é3-3", 5);
    }
}

1 Ответ

0 голосов
/ 28 мая 2018
  Scenario Outline: "Invalid Addition"
    Given A is <A> and B is <B>
    Then A + B is <result>

    Examples: 
      | A      | B    | result                          |
      | "é3-3" | 5    | java.lang.NumberFormatException |
      | "é3-3" | "aB" | java.lang.NumberFormatException |

Измените определение шага, приняв String в качестве аргумента вместо Integer.

private Exception excep;

    @Given("^A is (.*?) and B is (.*?)$")
    public void addValid(String arg1, String arg2) {

        try {
            testAdditionEngine = new AdditionEngine();
            testAdditionEngine.calculateAdditionAmount(arg1, arg2);
        } catch (NumberFormatException e) {
            excep = e;
        }
    };

    @Then("^A \\+ B is (.*?)$")
    public void validResult(String arg1){
        assertEquals(arg1, excep.getClass().getName());
    };

Вы получите неоднозначное пошаговое сообщение, если находитесь на огурце 2 и выше.Это будет связано с тем, что действительный план сценария будет соответствовать целочисленному и строковому определению.Измените одно из утверждений сценария.

enter image description here

enter image description here

...