相关疑难解决方法(0)

使用Mockito,如何拦截void方法上的回调对象?

我正在使用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

java unit-testing callback jaas mockito

28
推荐指数
1
解决办法
1万
查看次数

Java 单元测试 - 如何使用模拟答案对异步方法(使用回调)进行单元测试

我在类逻辑中有以下方法

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)

java unit-testing callback mockito

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

callback ×2

java ×2

mockito ×2

unit-testing ×2

jaas ×1