在单元测试中使用反射测试注释的存在是否被视为良好实践?

时间:2012-03-02 10:34:31

标签: java unit-testing reflection annotations testng

(这篇文章解释了我为什么要这样做:Good patterns for unit testing form beans that have annotation-based validation in Spring MVC

编写单元测试以仅测试字段或类的配置/注释是否是一种良好的做法?例如,如果你有:

@AnnotatedClass
public class MyClass {

@AnnotatedField1
@AnnotatedField2
private string myField;

}

编写单元测试是否有任何意义,可以检查上面是否存在注释?

3 个答案:

答案 0 :(得分:5)

基本答案是“是的 - 检查单元测试中的注释是否正常”

总是问自己“我在测试什么”。单元测试在类/方法级别测试“代码是否正确”。

你并没有真正“测试”代码,但是你断言编码器已经正确地注释了某些字段,在你的情况下是断言“代码是正确的”的一部分,所以“是” - 我认为这是可以接受的“测试”这个。

另一个选择是让这个断言成为你构建的代码样式检查阶段的一部分(如果你这样做的话) - 你必须编写一个自定义代码样式来做它,但我觉得这样会更多适当的地方检查这个。但是,设置可能有点痛苦,所以只需将其作为单元测试即可。

答案 1 :(得分:2)

我不会这么说,但这只是我个人的意见。可以在集成测试中轻松测试特定注释的存在及其正确用法。就个人而言,我遵循规则,在单元测试中我只覆盖特定类的java代码。 DB映射,JSR注释,GWT UiFields标记等在集成测试中进行测试。

答案 2 :(得分:0)

你打算怎么写这样的考试?您将阅读您的源代码,无论您在哪里看到此注释,您都会编写相应的测试,对吧?因此,在每种情况下,您都将为您已经知道的条件编写测试。

花时间开发更多功能。严重。