【问题标题】:Assert 2 strings are in alpha order断言 2 个字符串按字母顺序排列
【发布时间】:2025-12-25 18:30:15
【问题描述】:

我现在正在写。比较投注表中的排行榜条目的测试,首先我必须比较结果选择或玩家(有效),然后我必须比较每个玩家的分数(有效),但如果这两个属性相同我必须断言桌子上较高的玩家按字母顺序排列较高。我已经创建了变量 username_player 和 previous_user 来执行此操作,但无法弄清楚如何执行此操作,我试图将其放在 else if 部分(我认为这是正确的)。似乎没有断言选项可以执行此操作?

public void test_player_leaderboard_entry() {



    int size = playerRows.size();
    Integer previous_total = 0;
    Integer previous_points = 0;
    String previous_user = null;


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

        //Position
        String position_first_player = Drivers.getDriver().findElement(By.cssSelector("[data-qa-position-value='" + i + "']")).getText();
        //Points
        String points_player = Drivers.getDriver().findElement(By.cssSelector("[data-qa-points-value='" + i + "']")).getText();
        //Username
        String username_player = Drivers.getDriver().findElement(By.cssSelector("[data-qa-player-value='" + i + "']")).getText();
        //Row Number
        Integer row = i + 1;
        Integer point_player = Integer.parseInt(points_player);
        Integer total_of_won_and_looking_good = 0;



        //PICKS
        for (int pick_number = 1; pick_number < 5; pick_number++) {
            String pick_status = Drivers.getDriver().findElement(By.xpath("//*[@id='root']/div/main/section[2]/section/div/ol/a[" + row + "]/li/div[3]/div[" + pick_number + "]/div")).getAttribute("data-qa-pick-state");
            //System.out.println(pick_status);
            if (Integer.parseInt(pick_status) == 2 || Integer.parseInt(pick_status) == 1) {
                total_of_won_and_looking_good = total_of_won_and_looking_good + 1;
            }




        } if(previous_total.equals(total_of_won_and_looking_good)) {

            Assert.assertTrue(previous_points > point_player);
            System.out.println("Picks are the same, points are higher ");

        } else if (previous_total.equals(total_of_won_and_looking_good)&& previous_points.equals(point_player)) {

            Assert.assertTrue(previous_user.compareTo(username_player) < 0);



        }
        previous_total = total_of_won_and_looking_good;
        previous_points = point_player;

        previous_user = username_player;


        System.out.println("On row number " + row + " we find " + username_player + " in position " + position_first_player + " with " + total_of_won_and_looking_good + " correct picks and " + points_player + " points!");
    }
}

}

【问题讨论】:

    标签: java selenium testing automated-tests


    【解决方案1】:

    您可以使用 compareTo 方法。

    尝试对previous_user.compareTo(username_player) &lt;0 使用断言

    【讨论】:

      【解决方案2】:

      您可以在字符串上使用 compareTo 方法,按字典顺序比较它们。所以你可以做类似的事情

      Assert.assertTrue(previous_user.compareTo(username_player) &lt; 0)

      编辑: 也许你可以这样尝试,但我不完全确定这是你想要的:

              if(previous_total.equals(total_of_won_and_looking_good)) {
      
                  Assert.assertTrue(previous_points > point_player);
                  System.out.println("Picks are the same, points are higher ");
      
              } else if (previous_points.equals(point_player)) {
      
                  Assert.assertTrue(previous_user.compareTo(username_player) < 0);
      
              }
      

      【讨论】:

      • 我应该在哪里添加这个?我试图把它放在代码的 else if 部分,但 if 部分似乎覆盖了它一些如何写?我试图断言点和选择是否相同,然后断言 eh 字符串处于 alpha 状态,我认为它在错误的位置?我的 if 语句真的很糟糕,我更改了我的问题中的代码以反映这一点
      最近更新 更多