【问题标题】:Using regexp in assertEquals() does not work在 assertEquals() 中使用正则表达式不起作用
【发布时间】:2010-12-01 23:54:38
【问题描述】:

我在 assertEquals() 语句中使用正则表达式时遇到问题。这是声明。

Assert.assertEquals("regexp:*TST-*[0-9]{5}", driver.getTitle());

但我收到此错误:

org.junit.ComparisonFailure: expected:<[regexp:*TST-*[0-9]{5}]> but was:<[[#TST-23570] This is the new summary]>

看起来正则表达式只是一个正在比较的字符串。我错过了什么?

【问题讨论】:

  • 您在哪里看到可以在 assertEquals 中使用“regexp:”这一事实?
  • @Falmarri - 我也在想同样的事情 :) (+1)
  • 我知道你只是在学习,所以我的评论真的是要挑剔你或任何东西(我怀疑@Falmarri's 要么) - 它真的只是更多“你从哪里得到的”。换句话说,如果你从某个地方得到它,那么我们将不得不拿出干草叉并点燃网站;) (jk)
  • 我知道。问题是我搜索了两天,但没有找到任何可以让我举例说明我正在尝试做的事情的地方。我知道我做错了,所以我问路。我知道我们不喜欢“问路”,我们宁愿兜圈子。

标签: java regex selenium assert selenium-webdriver


【解决方案1】:

看起来您实际上并没有使用正则表达式。看起来这可能就是你想要做的?

Assert.assertTrue(driver.getTitle().matches("*TST-*[0-9]{5}"));

编辑#1:

您的正则表达式似乎也不太正确,请尝试:

Assert.assertTrue(driver.getTitle().matches(".*TST-\\d{5}.*"));

【讨论】:

  • 谢谢,效果很好。我需要的只是一个例子。现在我明白了。
  • 如果这是您需要的,您介意投票和/或接受这个答案吗?谢谢:)
【解决方案2】:

您断言这两个字符串是相同的。在您的情况下,您正在尝试检查您的标题是否等于“regexp:TST-[0-9]{5}”,而不是 regexp。

您可能想要这样做:

assert_true(driver.getTitle().matches("*TST-*[0-9]{5}"));

http://cupi2.uniandes.edu.co/javadoc/j2se/1.5.0/docs/api/java/lang/String.html#matches(java.lang.String)

【讨论】:

    猜你喜欢
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 2014-09-12
    相关资源
    最近更新 更多