Java 使用泛型参数模拟静态方法

Java 使用泛型参数模拟静态方法,java,junit,powermock,Java,Junit,Powermock,我试图用符号模拟静态方法 public static <T extends Object> T get( String name, Class<T> i ) { return null } 但是它的投掷 org.powermock.reflect.exceptions.MethodNotFoundException: No method found with name 'get' with parameter types: [ java.lang.St

我试图用符号模拟静态方法

 public static <T extends Object> T get( String name, Class<T> i )
  {
    return null
  }
但是它的投掷

org.powermock.reflect.exceptions.MethodNotFoundException: No method found with name 'get' with parameter types: [ java.lang.String, java.lang.Class ]
有人能告诉我们如何使用powermockito来模拟这个吗

  • 您需要首先告诉Powermockito您要通过哪个类包含静态方法进行模拟:

    PowerMockito.mockStatic(Classname.class);
    
  • 然后,您可以使用以下方法模拟该方法:

    PowerMockito.when(Classname.get("name", Clas.class)).thenReturn("Hi");
    

  • 这适用于静态方法,但不适用于泛型方法吗?@ginz这应该没有什么区别,因为类型擦除,被测试的方法在编译时将具有签名
    public static Object get(String name,Class i)
    。是的,仅使用字符串参数进行测试。第二部分不应该仍然是
    PowerMockito。当(ClassName.Class,“get”、“name”、Class.Class),然后返回(“Hi”);
    PowerMockito.when(Classname.get("name", Clas.class)).thenReturn("Hi");