我有一个逻辑可以做这样的事情,我想测试一下:
public void doSomething(int num) {
var list = service.method1(num);
if (!list.isEmpty()) {
// Flow 1
LOG.info("List exists for {}", num);
doAnotherThing(num);
} else {
// Flow 2
LOG.info("No list found for {}", num);
}
}
public void doAnotherThing(int num) {
Optional<Foo> foo = anotherService.get(num);
foo.ifPresentOrElse(
foo -> {
if (!foo.type().equals("no")) {
// Flow 3
anotherService.filter(foo.getFilter());
} else {
// Flow 4
LOG.info("Foo is type {} - skipping", foo.type());
}
},
// Flow 5
() -> LOG.info("No foo found for {} - skipping", num));
}
对于每个将测试不同流的测试,我的第一个想法是使用Mockito.verify()
来查看它们是否被调用。因此,为了测试流 1,我将验证另一个服务.get()
是在内部调用的
。为了测试流 2,我会验证另一个服务.get()
从未被调用过。这本来没问题,除了流程 4 和流程 5。它们都会调用另一个服务.get()
一次,但不会调用其他任何内容。
因此,我创建了一个类来捕获测试中的日志。这将检查是否记录了某些日志,并且我将能够通过它看到它落在哪个流上。但我想问:这是一种不好的做法吗?我将把它与< code>verify()结合起来,这样< code>verify()可以到达的流将具有更高的优先级。
这样做的一个缺点是测试将依赖于日志消息的正确性,因此它会有点不稳定。为了解决这个问题,我想过将其中一些日志消息作为受保护的静态变量取出,测试也可以使用该变量,以便消息在方法和相应的测试之间保持不变。这样,将仅测试流。
如果答案是这是一个不好的实践,我将感谢任何关于如何测试流4和流5的提示。
日志语句通常不是要测试的逻辑的一部分,而只是一个运维工具。应该调整它们以优化操作(不要太多的信息,不要太少),这样你就可以快速找出哪里出了问题,如果出了问题。确切的文本、日志级别和日志语句的数量不应被视为依赖于测试的稳定内容。否则,这将使更改日志记录概念变得更加困难。
有没有更简单的方法来完成我想要的?如果这是最好的方法,那么我做错了什么?
问题内容: 缩进SQL语句的公认做法是什么?例如,考虑以下SQL语句: 应该如何缩进?非常感谢。 问题答案: 我喜欢将所有的“,”放在前面,这样,当SQL编辑器在X行出现错误时,我就永远不会搜索它们。 对于那些不使用这种类型的编写SQL语句的人来说,这是一个示例。两者都包含缺少逗号的错误。 在第一个示例中,我发现更容易,更快捷。希望本示例向您展示更多我的观点。
多个action组装成块,可以根据不同条件执行一段语句 : tasks: - block: - yum: name={{ item }} state=installed with_items: - httpd - memcached - template: src=templa
问题内容: 我正在开发一个显示图像并播放数据库声音的应用程序。我正在尝试确定是否使用单独的JFrame从GUI向数据库添加图像。 我只是想知道使用多个JFrame窗口是否是一种好习惯? 问题答案: 我只是想知道使用多个JFrames是否是一种好习惯? 坏习惯(坏习惯)。 用户不友好:用户只希望看到一个图标时,会在任务栏中看到多个图标。加上编码问题的副作用。 * 编写和维护代码的噩梦: * 一个模态
语句和逻辑结构 #include <stdio.h> #include <stdlib.h> #include <Windows.h> //01.杂乱知识点: // 1.内存分配函数malloc(); // (1).分配单位:字节 // (2).分配方式: // 鲸吞+慢咽 // 2.内存分配注意事项: // 32位的单个进程一口气对多开辟2G
标准循环 为了保持简洁,重复的任务可以用以下简写的方式: - name: add several users user: name={{ item }} state=present groups=wheel with_items: - testuser1 - testuser2 如果你在变量文件中或者 ‘vars’ 区域定义了一组YAML列表,你也可以这样做: vars