有什么方法可以防止在模拟实现上出现"resource"警告?



这属于次要但持续的烦恼类别。 我正在使用Eclipse IDE。它非常有帮助地标记各种编码问题的警告,包括:

潜在的资源泄漏:"连接"可能未关闭

当您处理实际资源对象时,这可能是一个非常有用的警告,因此我喜欢将 Eclipse 配置为显示警告。 但是,在单元测试中处理 Mock 对象时(在此示例中,它是 java.sql.Connection 接口的单元测试友好实现),这很麻烦。 我知道删除警告的唯一方法是将@SuppressWarnings("resource")注释添加到引用对象的代码中。 不幸的是,这必须在使用 Mock 类的任何地方完成,这意味着经常使用的 Mock 类需要大量重复。

是否可以在 Mock 类上放置任何类级别注释以首先防止警告? 或者是否有其他方法可以防止对实际上没有任何资源泄漏的类发出警告?

根据你的Java版本(你需要java 7,2011年中期发布),你可以使用try-with块。 这是一个很好的功能,因为它还可以限定变量的范围,而不是让它们停留的时间超过需要的时间。

我有同样的问题。@SuppressWarnings("resource")注释可以在 TYPE 级别工作,因此我注释了模拟资源的整个测试类。

这是一个示例:

@ExtendWith(MockitoExtension.class)
@SuppressWarnings("resource")
public class BatchDaoTest {
    @InjectMocks
    private BatchDao cut;
    @Mock
    private Connection con;
...

我知道这不是最好的解决方案(因为它可以隐藏真正的问题),但这是迄今为止我找到的唯一解决方法。

最新更新