我正在使用mockito来测试遗留的JAAS/LDAP登录模块.
该javax.security.auth.callback.CallbackHandler接口定义了功能:
void handle(javax.security.auth.callback.Callback[] callbacks)
Run Code Online (Sandbox Code Playgroud)
我期待callbacks包含一个NameCallback,这是需要操纵以通过测试的对象.
有没有办法有效地模拟这个,或者我会更好地使用存根实现CallbackHandler?
我在类逻辑中有以下方法
public class Logic implements ILogic {
@Override
public void doSomethingInterestingAsync(final int number,
final ICallback callback){
new Thread(new Runnable() {
@Override
public void run() {
callback.response(number+1);
}
}).start();
}
}
Run Code Online (Sandbox Code Playgroud)
我通常用
ILogic.doSomethingInterestingAsync(1, new ICallback() {
@Override
public void response(int number) {
System.out.println(String.format("response - %s", number));
}
});
Run Code Online (Sandbox Code Playgroud)
现在我想对它进行单元测试。
所以我想一个解决方案是使用CountDownLatch(在其他SO 线程中找到)
如下:
@Test
public void testDoSomethingInterestingAsync_CountDownLatch() throws Exception {
final CountDownLatch lock = new CountDownLatch(1);
ILogic ILogic = new Logic();
final int testNumber = 1;
ILogic.doSomethingInterestingAsync(testNumber, new …Run Code Online (Sandbox Code Playgroud)