在一些 JUnit 修复过程中,我发现了这行代码:
Assert.assertNull(lAllEntryById.put(lEntry.getId(), lEntry));
如果我检查操作lAllEntryById.put(lEntry.getId(), lEntry)
,结果始终为空,但assertNull
仍然失败。
当我将代码更改为:
Entry lEntry = lAllEntryById.put(lEntry.getId(), lEntry);
Assert.assertNull(lEntry);
一切正常。
我有点困惑。你能告诉我为什么上面的代码行会得到两个不同的结果吗?
非常感谢...
最佳答案
这些行在断言中具有相同的结果:
Assert.assertNull(lAllEntryById.put(lEntry.getId(), lEntry));
还有这个
Entry lEntry = lAllEntryById.put(lEntry.getId(), lEntry);
Assert.assertNull(lEntry);
问题可能是由以下原因引起的:
在添加新元素之前忘记清除表格(然后
put
返回旧对象)您可以依次执行一条语句和另一条语句
为了避免这种情况,我建议这个实验:
lAllEntryById = new HashTable<EntryId, Entry>(); // ensure nothing effects it
Assert.assertNull(lAllEntryById.put(lEntry.getId(), lEntry));
关于java - 对 HashTable 的assertNull 行为感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18143855/