java - Java 方法内部调用的 Get 方法

标签 java unit-testing parsing junit

我想进行 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/

相关文章:

java - 如何使用模拟覆盖@Produces

date - 如何将 "YYYYMMDD"格式的字符串解析为 Timex.Parse.DateTime 类型?

JAVA - 基于另一个 CSV 文件读取 CSV 文件

java - onLocationChanged() 方法未被调用

java - 如何在 Solr 索引中创建嵌套文档?

unit-testing - 如何在 vue-test-utils 和 jest 中使用动态导入测试组件

c# - 不同类的大量命令行参数

Java - 使用 readLine 将文件读取为二进制文件

java - 如何获取 xml 中父标签内标签名称及其值的数据

android - 使用 Robotium 测试 PreferenceActivity