Ric*_*ler 1 java unit-testing annotations
从@Override注释的javadoc:
指示方法声明旨在覆盖超类中的方法声明.如果使用此批注类型注释方法但不覆盖超类方法,则编译器需要生成错误消息.
当我想测试一个类型的特定方法并替换我的测试主题调用的其他方法的行为时,我倾向于在测试中使用@Override注释.我的一位同事坚信,这不是一个有效的用途,但不确定原因.任何人都可以建议为什么要避免它?
我在下面添加了一个示例来说明我的用法.
对于测试对象Foo:
public class Foo {
/**
* params set elsewhere
*/
private Map<String, String> params;
public String doExecute(Map<String, String> params) {
// TODO Auto-generated method stub
return null;
}
public String execute() {
return doExecute(params);
}
}
Run Code Online (Sandbox Code Playgroud)
我会定义一个这样的测试:
public void testDoExecute() {
final Map<String, String> expectedParams = new HashMap<String, String>();
final String expectedResult= "expectedResult";
Foo foo = new Foo() {
@Override
public String doExecute(Map<String, String> params) {
assertEquals(expectedParams, params);
return expectedResult;
}
};
assertEquals(expectedResult, foo.execute());
}
Run Code Online (Sandbox Code Playgroud)
然后,如果我的doExecute()签名发生更改,我将在测试时遇到编译错误,而不是令人困惑的执行失败.
| 归档时间: |
|
| 查看次数: |
5654 次 |
| 最近记录: |