为什么在assertTrue()中使用matches()时收到AssertionFailedError?

Why am I receiving an AssertionFailedError when using matches() in assertTrue()?

提问人:floppalover 提问时间:11/14/2023 更新时间:11/14/2023 访问量:47

问:

@Test
void hasCurrentProgress()
{
    YTVideo yt = new YTVideo();
    yt.setUrl("https://www.youtube.com/watch?v=U6Z8FkjGEb4&t=2s");
    assertTrue(yt.getUrl().matches("(t=)"));
}

我正在尝试检测 url 中是否有任何“t=”,但即使给定的 url 确实包含“t=”并且适用于 IntelliJ 上的“检查正则表达式”功能,测试用例也会返回 false。有没有人解决这个问题,但仍然使用正则表达式?

Java IntelliJ-idea 正则表达式组 断言

评论

0赞 Reimeus 11/14/2023
assertTrue(yt.getUrl().contains("t="));似乎更简单......

答:

0赞 Semaphor 11/14/2023 #1

您需要在之前和之后多次接受任何字符,以下操作应该有效:t=

@Test
void hasCurrentProgress()
{
    YTVideo yt = new YTVideo();
    yt.setUrl("https://www.youtube.com/watch?v=U6Z8FkjGEb4&t=2s");
    assertTrue(yt.getUrl().matches(".*(t=).*"));
}

评论

0赞 floppalover 11/14/2023
上帝保佑你的灵魂,谢谢你,我一直在试图找出为什么这有一段时间不起作用。
0赞 Semaphor 11/14/2023
我很高兴我能帮上忙。如果它适合您,您可以将答案标记为已接受。