我想进行 JUnit 测试以确保某些类不使用一组特定的方法(来自其他类)。示例
class MyClass
{
void myMethod()
{
otherClass.otherClassStaticMethod();
}
}
class myTest
{
void test()
{
assertFalse(CalledMethods.getMethodsCalledBy("myClass.myMethod").Contains("otherClass.otherClassStaticMethod"));
}
}
在此测试中,我想确保 myMethod 不会调用 otherClassStaticMethod。如何在编译时找到方法内部调用的方法(忽略使用反射调用的方法)?我想到了 .java 解析器,你推荐吗?
最佳答案
您可以模拟“otherClass”并验证该方法未被调用。例如。使用 Mockito您甚至可以指定应该以何种顺序调用哪些方法(在它们的实例是模拟的情况下)并指定不允许调用哪些方法
正如 coding.mof 所说,要模拟静态方法,您应该使用 PowerMock/PowerMockito:
例子:
PowerMockito.mockStatic(OtherClass.class);
PowerMockito.verifyStatic(never());
OtherClass.otherClassStaticMethod();
关于java - Java 方法内部调用的 Get 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11722142/