java编写Unittest,其中包含2个列表
我是一个新的Junit学习者,我想根据2个列表类测试我的代码。然而,我从未见过这样的例子
我的真实代码如下:
public static List<JourneyType> applyFilter(List<JourneyType> journeyList, List<AvailabilityFilterOptionType> filterOptions)
{
List<JourneyType> filteredJourneyList = new ArrayList<>();
filteredJourneyList = applyStopFilters(journeyList, filterOptions);
filteredJourneyList = applyCarrierFilters(filteredJourneyList, filterOptions);
filteredJourneyList = applyRbdFilters(filteredJourneyList, filterOptions);
filteredJourneyList = applyDurationFilter(filteredJourneyList, filterOptions);
return filteredJourneyList;
}
以及我的测试场景:
@Test
public void testApplyFilter()
{
fail("Not yet implemented");
}
提前谢谢你
# 1 楼答案
事实上,这很简单
换句话说:你知道这个方法应该做什么。(好吧,这些知识是测试东西的先决条件。当你不知道你的代码在做什么时,没有必要通过测试来验证它的正确性。)
比如:给定一些已知的输入数据,你应该能够对输出返回做出预期。这就是你要检查的
当然,棘手的部分可能是正确识别依赖项,并在需要的地方模拟它们
但理想情况下,你的测试应该是这样的:测试被测试方法的公共契约。有东西进来了,你检查返回的输出是否符合你的期望。理想情况下,您必须为此类测试模拟任何,因为您根本不依赖测试实现细节。您只测试公共契约“给定此输入,这是预期输出”
(其中:
assertThat()
只是一种不同类型的断言,而is()
是一种hamcrest匹配器。还有许多其他的hamcrest匹配器,比如containsInAnyOrder()
(如果你不关心返回元素的顺序,那么它真的很整洁,但是你必须理解,它的使用略有不同,它需要containsInAnyOrder(expectedOutcomeList.toArray())
方法链接)