我需要使abstarct类的方法对JUnit测试用例可见,并且该抽象类已经扩展到我正在为其编写测试用例的另一个类。
调用该方法的方式如下:
例如,我已将 AbstractWebSocketHandler 扩展到我的类,并调用了一个 handleTextMessage 方法,该方法不受公共保护。
在我的课堂上,我这样称呼:
AbstractWebSocketHandler webSocketHandler = new TextWebSocketHandler() {
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
MY CODE....
}
}
我需要为此功能编写测试用例,但由于它不可见,因此我无法访问它。
为了使其可见,我尝试了以下代码:
Class<AbstractWebSocketHandler> clazz = AbstractWebSocketHandler.class;
Method method = clazz.getDeclaredMethod("handleTextMessage");
method.setAccessible(true);
但是没有运气。
有人可以帮我吗?
谢谢。
答案 0 :(得分:0)
我想您想测试该方法,但访问权限不是public
。
JUnit
的限制为@Test
,访问修饰符必须为public
。
您可以在抽象之间创建一个类以覆盖访问修饰符。
public abstract class AbstractClass {
protect abstract void abstractMethod();
}
public abstract class ProxyParentClass extends AbstractClass {
@Override
public abstract void abstractMethod();
}
public class SubClass extends ProxyParentClass{
@Test
@Override
public void abstractMethod() {
System.out.println("test");
}
}