0

假设我有一个类Foo和一个方法evilMethod

class Foo {

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

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

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

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

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

4

2 回答 2

2

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

于 2013-11-13T12:28:20.700 回答
0

尽管您要求不在运行时对其进行测试(除非您只是在生产中进行测试),但我个人还是希望将检查包含在单元测试中。使用 Mockito 它看起来像这样:

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

根据答案:

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

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

于 2013-11-13T12:43:18.297 回答