Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编写单元测试,其中包含2个列表_Java_Spring_Junit - Fatal编程技术网

Java 编写单元测试,其中包含2个列表

Java 编写单元测试,其中包含2个列表,java,spring,junit,Java,Spring,Junit,我是一个新的Junit学习者,我想根据2个列表类测试我的代码。然而,我从未见过这样的例子 我的真实代码如下: public static List<JourneyType> applyFilter(List<JourneyType> journeyList, List<AvailabilityFilterOptionType> filterOptions) { List<JourneyType> filteredJourneyList =

我是一个新的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() 
{
    assertThat(someObject.applyFilter(journies, filters), is(expectedOutcome));
}
换句话说:你知道这个方法应该做什么。(好吧,这些知识是测试东西的先决条件。当你不知道你的代码在做什么时,通过测试来验证它的正确性是没有意义的…)

如:给定一些已知的输入数据,您应该能够对返回的输出做出期望。这就是你要检查的

当然,棘手的部分可能是正确地识别依赖项,并在需要时模拟它们

但理想情况下,您的测试应该是:测试您的测试方法的公共契约。有东西进来了,你检查返回的输出是否符合你的期望。理想情况下,您不必为此类测试模拟任何内容,因为您根本不依赖于测试实现细节。您只测试公共契约“给定此输入,这是预期的输出”


(其中:
assertThat()
只是一种不同类型的断言,
is()
是一种匹配器。还有许多其他hamcrest匹配器,例如
containsInAnyOrder()
(如果您不关心返回的元素的顺序,那么这是非常整洁的,但是您必须理解,它的使用略有不同,它需要
包含任何顺序(expectedOutcomeList.toArray())
methinks)

非常感谢您,先生,请询问我可以在某个对象中放入什么内容,以便给出示例和预期结果。这是您的代码。从所有查看此测试方法的人中,您是唯一一个(应该!)知道这个方法的契约。为了测试它,一个人必须了解这个方法的作用。我们不知道。你知道!如果你不知道你的代码应该做什么,对不起,我们帮不了你。这就是我回答的全部要点!我感谢你的快速接受!
@Test
public void testApplyFilter() 
{
    assertThat(someObject.applyFilter(journies, filters), is(expectedOutcome));
}