Bdd黄瓜问题

时间:2020-07-20 17:21:01

标签: scala cucumber bdd cucumber-junit

我刚刚开始从事BDD黄瓜的研究。我正在使用scala编写测试用例。我试图在场景定义中使用场景大纲并传递参数。我的代码如下。

Scenario Outline:  Data is parsed and persisted
    Given Portal is running
    When A data of <type> is received
    Then The data of <type> with <Id> should be parsed and persisted

  

      Examples:
        | type        | Id  |
        | Personal    | 1   |
        |Professional | 2   |

现在在我的when条件下,我试图按以下方式获取这些参数

When("""^A data of \"([^\"]*)\" is received$""") {
(type: String) => 
//My code
}

现在,在运行代码时,每次都会出现以下错误。

io.cucumber.junit.UndefinedStepException: The step "A data of Personal is received" is undefined. You can implement it using the snippet(s) below:

When("""A data of Personal is received""") { () =>
  // Write code here that turns the phrase above into concrete actions
  throw new io.cucumber.scala.PendingException()
}

尽管我的代码在什么时候。另外,如果我不使用方案大纲,那么它可以正常工作,但是我想在代码中使用方案大纲。

  1. 我正在使用功能文件中的标签来运行测试用例。当我使用命令sbt test @ tag1运行测试用例时,测试用例执行正常,但是当所有测试用例在cmd上运行完毕时,我得到以下错误:

     [error] Expected ';'
    
     [error] @tag1 
    

我尝试放入“;”标签后,但仍然出现相同的错误 这是什么问题,我该如何解决?

  1. 我的应用程序中有4-5个功能文件。这意味着4-5个标签。到目前为止,我要运行的测试用例提供了功能文件的路径,并在Runner类中通过逐步定义将其“粘”在一起。如何在Runner类中提供所有标记,以便我的应用程序在启动时一一运行所有测试用例?

2 个答案:

答案 0 :(得分:0)

您缺少<type>周围的双引号:

When A data of "<type>" is received

答案 1 :(得分:0)

只是一些一般性建议。

在进行填充时,请使事情尽可能简单,着眼于清晰和简单,不要担心重复。

如果您编写了2个简单的场景,您的任务就会简单得多

<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.min.css" rel="stylesheet" />

<div class="container">
  <div class="row">
    <div class="col-6 py-5">

      <form id="contact-form" method="post" action=".." role="form">

        <div class="controls">
          <div class="row">
            <div class="col-md-6">
              <div class="form-group">
                <label for="form_name">Firstname *</label>
                <input id="form_name" type="text" name="name" class="form-control" placeholder="Please enter your firstname *" required="required" data-error="Firstname is required.">
                <div class="help-block with-errors"></div>
              </div>
            </div>
            <div class="col-md-6">
              <div class="form-group">
                <label for="form_lastname">Lastname *</label>
                <input id="form_lastname" type="text" name="surname" class="form-control" placeholder="Please enter your lastname *" required="required" data-error="Lastname is required.">
                <div class="help-block with-errors"></div>
              </div>
            </div>
          </div>
          <div class="row">

            <div class="col-md-6">
              <div class="form-group">
                <label for="form_email">Email *</label>
                <input id="form_email" type="email" name="email" class="form-control" placeholder="Please enter your email *" required="required" data-error="Valid email is required.">
                <div class="help-block with-errors"></div>
              </div>
            </div>
            <div class="col-md-6">
              <div class="form-group">
                <label for="form_need">Please specify your need </label>
                <select id="form_need" name="need" class="form-control" required="required" data-error="Please specify your need.">
                  <option value=""></option>
                  <option value="1">...</option>
                  <option value="2">...</option>
                  <option value="3">...</option>
                  <option value="Other">Other</option>
                </select>
                <div class="help-block with-errors"></div>
              </div>
            </div>
          </div>
          <div class="row">

            <div class="col-md-12">

              <div class="form-group">
                <label for="form_message">Message *</label>
                <textarea id="form_message" name="message" class="form-control" placeholder="Message for me *" rows="4" required="required" data-error="Please, leave us a message."></textarea>
                <div class="help-block with-errors"></div>
              </div>
            </div>
            <div class="col-md-12">
              <input type="submit" class="btn btn-success btn-send" value="Send message">
            </div>
          </div>
        </div>

      </form>

    </div>
    <div class="col-6 py-5">
      <div id="googleMap"></div>

      <script>
        function myMap() {
          var mapProp = {
            center: new google.maps.LatLng(51.508742, -0.120850),
            zoom: 5,
          };
          var map = new google.maps.Map(document.getElementById("googleMap"), mapProp);
        }
      </script>

      <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_KEY&callback=myMap"></script>
    </div>
  </div>
  <!-- row-->
</div>
<!-- container-->

其次,不使用标签来运行您的功能,您还不需要标签。

如果避免场景概述,正则表达式,标签,转换等,则可以更有效地进行提示。Cucumber的主要功能是使用自然语言来清楚地表达自己。专注于此并保持简单...

相关问题