我正在为自己写一个小电影库。这部分是为了学习TDD。现在我遇到了一个我无法解决的问题。
问题在于,当我运行整个类(在eclipse中右击上面的类名)时,第二个测试失败,因为删除不成功。但是当右键单击该方法(getMovieGenres_getAllGenresAndRemoveOne_returnsTwoGenreAndIdsAreDifferent)并选择Run as Junit Test时,它可以工作。
我不一定需要修复,但至少有一些关于如何找到junit这样做的建议。
答案 0 :(得分:3)
从解释问题的方式来看,问题似乎出现在setUp类中。 setUp类在每个测试用例调用之前运行。这是一般顺序。
1-添加三部电影。
2-测试是否有三部电影。
3-添加三部电影
4-删除电影项目#1。
由于序列1-4有效,问题是序列3.序列3吞下一些异常或改变底层对象。 (可能会改变序列。)在不知道addMovie如何更改底层对象的情况下,很难说清楚。
答案 1 :(得分:0)
测试类之外的某些东西(可能是超类)正在创建movieLibraryService
,并且它不会像需要进行独立测试那样经常重新创建。
如果添加行
movieLibraryService = new MovieLibraryService();
在testSetUp()
方法的顶部,此服务将在每个测试方法运行之前正确重置,并且它们可能会正常运行。
实际上,我怀疑你在关于大小的断言上失败了,因为大小变为6而不是3。
或者,您可以添加一个拆除方法(注释为@After
),删除电影库的内容,使其始终为空。
答案 2 :(得分:0)