Как справиться с неудовлетворительным состоянием `@ WHEN` в` огурце`? - PullRequest
0 голосов
/ 27 апреля 2018

В моем случае я использовал огурец с Junit, а в @WHEN я использовал логику для теста. Когда мой тест выполнен, тогда мой код переходит к @THEN. Но когда мой код неудовлетворен, я использую org.Junit.Assert.fail(), чтобы провалить тест без сообщения, но я получил следующую ошибку журнала:

java.lang.AssertionError
  at org.junit.Assert.fail(Assert.java:86)
  at org.junit.Assert.fail(Assert.java:95)
  at com.abcfinancial.bdd.cucumber.serenity.cucumberstep.BusinessSignUp.validateTheProvidedFields(BusinessSignUp.java:66)
  at ✽.firstname is vikas lastName is jindal password is 1234576 email is bravo@asd.com organization name is abc location name is BananaMans Land Location Location address1 is 123 Main Rd address2 is Near XYZ  city is  Pizzaburg state is Ohio country is United States zipcode is 53421  org email address is vikas@gmail.com(src/test/resources/features/businesssignup/01business_sign_up.feature:8)

Но я не хочу, чтобы at ✽.firstname is vikas lastName is jindal password is 1234576 email is bravo@asd.com organization name is abc location name is BananaMans Land Location Location address1 is 123 Main Rd address2 is Near XYZ city is Pizzaburg state is Ohio country is United States zipcode is 53421 org email address is vikas@gmail.com(src/test/resources/features/businesssignup/01business_sign_up.feature:8) строка ошибки.

Мой класс Java:

public class BusinessSignUp {
private static final Logger applicationLogger = LoggerFactory.getLogger("ApplicationLogger");

GlobalBeans signUpDomaindomain = null;
String threadId = String.valueOf(Thread.currentThread().getId());
Map<String, GlobalBeans> refIdMap = GlobalRefIdMap.getRefIdMapInstance().getRefIdMap();

@Steps
BusinessSignUpSerenity businessSignUpSteps;

@Given("^Tester Name is (.*)$")
public void givenBaseUri(String tester) {
    applicationLogger.info("Tester Name is {}", tester);

}

@When("^firstname is (.*) lastName is (.*) password is (.*) email is (.*) organization name is (.*) location name" +
        " is (.*) Location address1 is (.*) address2 is (.*)  city is  (.*) state is (.*) country is (.*) zipcode" +
        " is (.*)  org email address is (.*)$")
public void validateTheProvidedFields(String firstName, String lastName, String password, String email, String
        orgName, String organizationLocationName, String organizationLocationAddress1, String
                                              organizationLocationAddress2, String organizationLocationCity,
                                      String organizationLocationState, String
                                              organizationLocationCountry, String organizationLocationZip, String
                                              orgEmail) {
    try {
        if (refIdMap.size() == 0) {
            refIdMap = Utility.setBusinessSignupDomain(threadId, firstName, lastName, password, email, orgName,
                    organizationLocationName, organizationLocationAddress1, organizationLocationAddress2,
                    organizationLocationCity, organizationLocationState, organizationLocationCountry,
                    organizationLocationZip, orgEmail);
        }
        signUpDomaindomain = refIdMap.get(threadId);
        applicationLogger.info("Printing domain in BusinessSignUp with  {}", signUpDomaindomain);
        businessSignUpSteps.doSignup(signUpDomaindomain, refIdMap);


    } catch (Exception exception) {
        applicationLogger.error("Printing exception detail {}", exception.getMessage());
        exception.printStackTrace();
        Assert.fail();
    }

}

@Then("^SignUp is(.*)$")
public void success(String message) {
    if (AppConstants.success_message.equals(message.trim())) {
        applicationLogger.info("***** SignUp is : {} *****", message);
    } else {
        applicationLogger.info("***** SignUp is : {} *****", AppConstants.unsuccessful_message);
    }
  }

}

В вышеприведенном классе я использую код регистрации, где я использовал файл функции следующим образом:

https://drive.google.com/drive/folders/11K0I-XYE6BzIrzbrAzk8odfaze-S5oRE?usp=sharing

1 Ответ

0 голосов
/ 27 апреля 2018

В последней версии огурца 2.4.0 класс, который добавляет последнюю строку трассировки стека о файле объектов, относится к классу cucumber.runtime.StepDefinitionMatch. Точный метод - removeFrameworkFramesAndAppendStepLocation(). Это в основном добавляет stacktrace с соответствующей строкой из файла объектов (Объект класса StackTraceElement). Вам нужно будет посмотреть на вызов из метода runStep().

Даже если вы измените это, код этого класса будет довольно сильно изменен в следующем выпуске.

...