我有使用java8和被动测试异步执行的repo:
zadd的界面:
Observable<Long> zadd(K key, double score, V member);
public class TargetClass()
{
..
public void executeMethod(List<String> input) {
input.forEach(item -> redisConnection.reactive().zadd(...).subscribe(
result -> log.info("Success")
error -> log.error("Failed...")
));
}
..
}
我的junit测试代码:
@Test
public void testMethod() {
TargetClass targetClass=new TargetClass();
targetClass.executeMethod(Arrays.asList("input1", "input2", "input3"));
//as you can see I must put here Thread.sleep in order to let my execution to finish before continue since we have dependency on it
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//continue with testing..
如何修改我的代码部分权限。添加Thread.sleep
让异步方法代码发生是不正确的
谢谢, 射线。
答案 0 :(得分:1)
如果我是你,我会通过添加2个新参数来重载方法/etc/haproxy/haproxy.cfg
,一个参数将是在executeMethod
上执行的函数,另一个参数将在success
上执行。我会使用新方法failure
而不是protected
,我会在单元测试中测试这个新方法而不是另一个。您的public
方法可以使用此public
调用新方法。在我的单元测试中,我可以提供一种方法来获得这样的结果:
executeMethod(input, result -> log.info("Success"), error -> log.error("Failed..."))