gpt4 book ai didi

java - 编写需要 2 个列表的 Unittest

转载 作者:行者123 更新时间:2023-11-30 07:45:46 25 4
gpt4 key购买 nike

我是一名新的 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");
}

先谢谢你

最佳答案

其实这个很简单

@Test
public void testApplyFilter()
{
assertThat(someObject.applyFilter(journies, filters), is(expectedOutcome));
}

换句话说:你知道这个方法应该做什么。 (好吧,这些知识是测试东西的先决条件。当你不知道你的代码在做什么时,通过测试来验证它的正确性是没有意义的......)

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

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

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

( 其中:assertThat() 只是一种不同类型的断言,is() 是一个 hamcrest 匹配器。还有许多其他的 hamcrest 匹配器,例如as containsInAnyOrder()(如果你不关心返回元素的顺序,那真的很整洁,但你必须明白它的用法略有不同,它需要 containsInAnyOrder(expectedOutcomeList .toArray()) 方法 )

关于java - 编写需要 2 个列表的 Unittest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51308410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com