假设我有一个课程Foo
和一个方法evilMethod
:
class Foo {
public void evilMethod() {
// do sth
}
}
有没有办法编写一个测试,只要在类路径的任何类中调用此方法,该测试都会失败?我的意思是,不是在运行时调用该方法,而是在代码中声明它时。
例如,类路径上任何类中此代码的前置应该使测试失败:
if(false) {
Foo f = new Foo();
f.evilMethod(); // test fails because of that
}
我想要实现的目标:我想注释不应该在某个项目中调用的方法,但是需要放在那里以供在另一个项目中使用,然后编写一个测试,确保在任何地方都不会调用带注释的方法确实
答案 0 :(得分:1)
我不知道它是否解决了您的问题,但FindBugs对Java项目进行了静态代码分析。也许你可以在那里定义一个涵盖你的问题的规则......
答案 1 :(得分:0)
尽管你要求它不要在运行时进行测试(除非你只是在生产中),但我个人想要将支票作为单元测试的一部分。使用Mockito它看起来像这样:
verify(mockFoo, never()).evilMethod();
基于答案:
https://stackoverflow.com/a/12863072/575766
如果你的项目代码覆盖率很好,那应该为你解决问题。