gpt4 book ai didi

java - 我可以在@After 方法中放置单元测试结果验证吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:53:11 24 4
gpt4 key购买 nike

我正在为一个方法的行为编写一个单元测试,并且想尝试减少我的代码重复 - 我即将再次将测试用例加倍,文件正在获取有点难看。

如果有人真的感兴趣,the code is here (对 future 的警告 - 链接可能不是永久性的)。

现在,我执行以下操作,并以略有不同的方式重复几次:

@Test
public void testAdd64OfMax64() {
// Set up container
TileEntityChest nmsinv = new TileEntityChest();
Inventory container = new CraftInventory(nmsinv);
// Call method
HashMap<Integer,ItemStack> leftover = container.addItem(new ItemStack(Foo, 64));
// Set up expected result
ItemStack[] expected = empty.clone();
expected[0] = new ItemStack(Foo, 64);
// Verify result
assertThat(container.getContents(), is(expected));
assertThat(leftover, is(Collections.EMPTY_MAP));
}

(注意:assertThat 来自 org.hamcrest.Matchers。)

我知道我可以将“设置容器”和空数组克隆到@Before 方法中。

我的问题是,我能否将 assertThat 方法放入 @After 方法中并让测试仍然失败(当它应该失败时)?

最佳答案

没有。 After 方法应该用于在测试运行后释放外部资源。另请注意,即使您的 Test 方法抛出异常,它也能保证运行,这在您的情况下可能不理想。

此外,请考虑将来需要维护您的代码的人员。你违反了 PLA ,通过在 After 方法中验证测试结果。没有人期望如此!

如果您创建一个辅助方法会更好,例如checkResults 在每个 Test 方法结束时调用以验证您的结果。

关于java - 我可以在@After 方法中放置单元测试结果验证吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15551677/

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