如何在Java的步骤定义中的Cucumber数据表中使用变量名?

时间:2015-07-09 03:19:13

标签: java datatable cucumber bdd

我在Cucumber中有以下场景:

Scenario: As sysadmin I delete an user used for testing

  Given I in selfservice at the page Manage user
  When I search for an existing user 

    | users | ORGADMINUSER_LASTNAME         |
    | users | ORGADMINUSER_LASTNAME         |

字符串ORGADMINUSER_LASTNAME是我的Java类中的一个变量,它在执行场景时包含一个值。如何将此字符串转换为具有该名称的变量值?

这是Java中的步骤定义:

    @When("^I search for an existing user and delete it$")
    public void i_search_for_an_existing_user_and_delete_it(DataTable table) throws Throwable {

        // I get the list of users from the Data table and then pass them through the web elements in manage users

        Thread.sleep(5000);
         List<List<String>> user =table.raw();
         System.out.println("----------------------------------------------");
         System.out.println("Number of users in Feature file: " + user.size());

        try{
         for (int i = 0; i < user.size(); i++) { 

             List<String> org= user.get(i);

             String Userstring=user.get(i).get(1).toString();
             System.out.println("----------------------------------------------");
             System.out.println(Userstring);

1 个答案:

答案 0 :(得分:0)

最简单的方法是简单地检查用户值是否为= 0,然后简单地对该变量进行get调用,并将ORGADMINUSER_LASTNAME替换为该变量。

否则,如果您想要更通用的东西,则可能需要研究Reflection API。就像是: Userstring

只需先使用ClassOfTheField.getField(Userstring).get(null)确保Userstring字段存在于ClassOfTheField中,否则您将得到一个getFields()并且该字段是静态的(或传入类的实例)如果不在get调用中)。