【问题标题】:JUnit test on JAVA failedJAVA 上的 JUnit 测试失败
【发布时间】:2021-06-30 15:04:05
【问题描述】:

我是新来的,很抱歉提出愚蠢的问题。

我的 JUnit 测试有一些问题:由于某些原因,它显示我的索引错误。

我将链接附加到包含测试和屏幕的存储库。

谢谢! 错误:

org.opentest4j.AssertionFailedError: array contents differ at index [0], 
expected: <Poster(id=3, pictureId=33, filmName=Space, filmGenre=Lamusic)> 
but was: <Poster(id=2, pictureId=22, filmName=Moon, filmGenre=Lamedy)>

Click here to see Test in GitHub

【问题讨论】:

  • 请将您的代码发布为文本,而不是文本页面的链接。
  • @ScottHunter 喜欢这样吗?
  • 否;在问题中包含代码文本,而不是指向它的链接。
  • @ScottHunter 那么帖子太长了
  • 只发布与您的问题相关的部分。 (49 行的帖子太长了。)

标签: java maven junit qa


【解决方案1】:

在您的第二个测试 getLastPosters2()(不起作用)中,您断言的顺序与您的第一个测试 getLastPosters() 不同。

Poster[] expected = new Poster[]{thirdFilm,secondFilm};

这是您添加到PosterManager 的相反顺序。

将顺序更改为以下,测试正常:

Poster[] expected = new Poster[]{secondFilm,thirdFilm};

在您的第一次测试 getLastPosters() 时,您以相同的顺序断言,因为您将它们添加到 PosterManager

但是,要么您的第二个测试断言错误的顺序并失败,要么您的实现错误,您的第一个测试是“假阳性”。

【讨论】:

  • 哦,非常感谢,现在一切正常。我把它放在 {thirdFilm, secondFilm] 因为我认为经理应该只放两部电影,从最近的一部开始,所以应该有第一个 thirdFilm 然后是 secondFilm
【解决方案2】:

您的测试正在寻找自下而上的结果,而您的代码正在使用自上而下的方法创建数组!

【讨论】:

  • 好的,谢谢。那么我怎么能告诉测试,让它相反呢?使用@Before @After?请给我一个例子。
猜你喜欢
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 2011-03-29
  • 2019-05-02
  • 2015-07-04
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
相关资源
最近更新 更多