2012-11-21 69 views
2

版工作 按照API doc,@PrepareForTest應該能夠採取通配符,如:powermock @PrepareForTest不帶通配符值

@PrepareForTest( 「com.smin *」)

但在我而言,它只是簡單地不能編譯,編譯錯誤:

Type mismatch: cannot convert from String to Class<?>[]

我看了一下PrepareForTest的源代碼,我只是不明白這個註解如何利用通配符作爲它的值。有任何想法嗎?

@Target({ ElementType.TYPE, ElementType.METHOD }) 
@Retention(RetentionPolicy.RUNTIME) 
@Documented 
@Inherited 
public @interface PrepareForTest { 
    Class<?>[] value() default IndicateReloadClass.class; 

    String[] fullyQualifiedNames() default ""; 
} 

回答

5

是的 - 文檔似乎並不符合現實。嘗試:

@PrepareForTest(fullyQualifiedNames={"com.smin.*"}) 

認爲的通配符名稱的分辨率在MockClassLoader會發生或它的超類,DeferSupportingClassLoader,如果你覺得更深的挖掘。

+0

是的,嘗試fullyQualifiedNames,它的工作原理。謝謝。 – Shengjie