gpt4 book ai didi

java - 如何将 Hamcrest 匹配器应用于被测类的属性?

转载 作者:行者123 更新时间:2023-11-30 06:57:59 24 4
gpt4 key购买 nike

有没有办法构建一个组合的 Hamcrest 匹配器来测试一个对象和这个对象的属性? - 伪代码:

both(
instanceof(MultipleFailureException.class)
).and(
// pseudo code starts
adapt(
new Adapter<MultipleFailureException, Iterable<Throwable>()
{
public Iterable<Throwable> getAdapter(MultipleFailureException item)
{
return item.getFailures();
}
},
// pseudo code ends
everyItem(instanceOf(IllegalArgumentException.class))
)
)

背景:我有一个 JUnit 测试,它迭代一组动态对象。每个对象在处理时都应该抛出异常。收集异常。测试预计以包含这些抛出异常的集合的 MultipleFailureException 结束:

protected final ExpectedException expectation = ExpectedException.none();
protected final ErrorCollector collector = new ErrorCollector();

@Rule
public RuleChain exceptionRules = RuleChain.outerRule(expectation).around(collector);

@Test
public void testIllegalEnumConstant()
{
expectation.expect(/* pseudo code from above */);
for (Object object : ILLEGAL_OBJECTS)
{
try
{
object.processWithThrow();
}
catch (Throwable T)
{
collector.addError(T);
}
}
}

最佳答案

我想您可能正在寻找 hasPropertyhasPropertyWithValue

示例见此处:https://theholyjava.wordpress.com/2011/10/15/hasproperty-the-hidden-gem-of-hamcrest-and-assertthat/

另一个我之前工作过的例子;在这里,我们检查是否有 Quote 方法 getModels() 返回 PhoneModel 的集合,并且集合中的其中一项具有属性 makeId 等于 LG_ID 和 modelId 等于 NEXUS_4_ID。

            assertThat(quote.getModels(),
hasItem(Matchers.<PhoneModel> hasProperty("makeId",
equalTo(LG_ID))));
assertThat(quote.getModels(),
hasItem(Matchers.<PhoneModel> hasProperty("modelId",
equalTo(NEXUS_4_ID))));
}

为此,hamcrest 依赖于您采用 JavaBean惯例。

关于java - 如何将 Hamcrest 匹配器应用于被测类的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33123344/

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