我正在为该类编写一个简单的 JUnit
测试MyObject
。
阿MyObject
可以从静态工厂方法,需要一个可变参数的创建
字符串 。
MyObject.ofComponents("Uno", "Dos", "Tres");
在的存在期间的任何时间MyObject
,客户端可以检查它通过在的形式创建的参数 列表
.getComponents()
方法。
myObject.ofComponents(); // -> List<String>: { "Uno", "Dos", "Tres" }
换句话说,a MyObject
既记住并公开了使之成为现实的参数列表。有关此合同的更多详细信息:
getComponents
将与为对象创建选择的顺序相同null
未定义(其他代码保证没有null
出厂)我正在编写一个简单的测试,该测试MyObject
从
String 列表创建一个,并检查它是否可以通过返回相同的列表.getComponents()
。
我立即执行此操作,但这应该在现实的代码路径中一定距离处发生 。
这是我的尝试:
List<String> argumentComponents = Lists.newArrayList("One", "Two", "Three");
List<String> returnedComponents =
MyObject.ofComponents(
argumentComponents.toArray(new String[argumentComponents.size()]))
.getComponents();
assertTrue(Iterables.elementsEqual(argumentComponents, returnedComponents));
Iterables.elementsEqual()
最好的办法,只要我有库在我的构建路径,那些两个列表比较? 我一直在为此苦恼; 我应该使用遍及Iterable
.equals()
..或Internet搜索建议的任何其他方法的帮助器方法吗?比较单元测试列表的规范方法是什么?.toArray()
将 List
我更喜欢使用Hamcrest,因为如果出现故障,它可以提供更好的输出
Assert.assertThat(listUnderTest,
IsIterableContainingInOrder.contains(expectedList.toArray()));
而不是报告
expected true, got false
它会报告
expected List containing "1, 2, 3, ..." got list containing "4, 6, 2, ..."
IsIterableContainingInOrder.contain
Hamcrest
根据Javadoc:
为Iterables创建一个匹配器,当在经过检查的Iterable上单次通过时,该匹配器将产生一系列项目,每个项目在逻辑上均等于指定项目中的相应项目。对于正匹配,所检查的可迭代项的长度必须与指定项目的数量相同
因此,listUnderTest
必须具有相同数量的元素,并且每个元素必须按顺序匹配期望值。
的顺序将与为创建对象选择的顺序相同 允许重复的后续字符串组件并按顺序保留 未定义的行为(其他代码保证没有进入工厂) 在对象实例化之后,没有任何方法可以更改组件列表 我正在编写一个简单的测试,该测试从字符串列表创建并检查它是否可以通过返回相同的列表。我立即这样做,但这应该发生在一个现实的代码路径的远处。 这里是我的尝试: null null
根据逻辑,我需要实现两个,如果它们以相同的“相对”顺序具有相同的元素,则它们被认为是相等的。 举个例子,以下一对列表被认为彼此相等: 只要遵守相对顺序,就可以认为它们是平等的。 作为反例,这两个不相等: 导致 和 交换到位。 所以,基本上我发现这很有挑战性,因为这不是顺序完全重要的情况,也不是顺序完全不重要的情况。在这种情况下,我会使用普通的< code>list1.equals(list2)方法
问题内容: 我如何测试python中两个JSON对象是否相等,而忽略列表的顺序? 例如 … JSON文档 a : JSON文档 b : 并且即使列表的顺序不同,也应该比较相等。 问题答案: 如果要使两个具有相同元素但顺序不同的对象相等,那么显而易见的事情是比较它们的排序后的副本-例如,以JSON字符串和表示的字典: …但这是行不通的,因为在每种情况下,顶层dict的项都是具有相同元素的列表,但是顺
问题内容: 我如何测试python中两个JSON对象是否相等,而忽略列表的顺序? 例如 … JSON文档a: JSON文档b: 并且应该比较相等,即使列表的顺序不同。 问题答案: 如果你想要两个具有相同元素但顺序不同的对象相等,那么显而易见的事情是比较它们的排序后的副本-例如,以JSON字符串和表示的字典: …但这是行不通的,因为在每种情况下,”errors”顶层dict的项都是具有相同元素的列表
"给定两个字符串s和t,编写一个函数来检查s是否包含t的所有字符(顺序与字符串t相同)。返回true或false。递归不一定。这是我用java写的代码片段。问题是输入: string1="st3h5irteuyarh!"和string2="shrey"它应该返回TRUE,但它返回FALSE。那是为什么?"
我想通过使用JUnit创建单元测试来测试某些字符串列表是否正确生成。 我有两个字符串列表(我的代码中的一个列表是private static final,比方说列表1),它们以不同的顺序使用相同的元素(相同的元素可以相乘): 我不想使用这种类型的函数,因为它只适用于少量元素: