如何检查代码库中是否有任何方法调用

时间:2013-11-13 12:19:49

标签: java testing reflection

假设我有一个课程Foo和一个方法evilMethod

class Foo {

    public void evilMethod() {
       // do sth
    }
}

有没有办法编写一个测试,只要在类路径的任何类中调用此方法,该测试都会失败?我的意思是,不是在运行时调用该方法,而是在代码中声明它时。

例如,类路径上任何类中此代码的前置应该使测试失败:

if(false) {
    Foo f = new Foo();
    f.evilMethod(); // test fails because of that
}

我想要实现的目标:我想注释不应该在某个项目中调用的方法,但是需要放在那里以供在另一个项目中使用,然后编写一个测试,确保在任何地方都不会调用带注释的方法确实

2 个答案:

答案 0 :(得分:1)

我不知道它是否解决了您的问题,但FindBugs对Java项目进行了静态代码分析。也许你可以在那里定义一个涵盖你的问题的规则......

答案 1 :(得分:0)

尽管你要求它不要在运行时进行测试(除非你只是在生产中),但我个人想要将支票作为单元测试的一部分。使用Mockito它看起来像这样:

verify(mockFoo, never()).evilMethod();

基于答案:

https://stackoverflow.com/a/12863072/575766

如果你的项目代码覆盖率很好,那应该为你解决问题。