我在 Eclipse 项目中有一个 JUnit 类。如下所示:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/*some other imports*/
public class _JunitTests{
final Logger logger = LoggerFactory.getLogger(_JunitTests.class);
public void test(int num){
logger.info("**** tests no."+num+" ***");
/* some code */
}
@Test
public static void test1() {
test(1);
}
@Test
public static void test2() {
test(2);
}
@Test
public static void test3() {
test(3);
}
@Test
public static void test1() {
test(1);
}
}
当我运行所有测试时,我期望输出诸如[忽略 info 的类信息]
**** tests no.1 ***
/* somethings */
**** tests no.2 ***
/* somethings */
**** tests no.3 ***
/* somethings */
但是,控制台中显示的结果通常是混乱的,例如:
**** tests no.1 ***
**** tests no.2 ***
**** tests
/* somethings */
no.3 ***
/* somethings */
/* somethings */
当有异常消息时,这种情况在我的其他代码之前经常发生。
我之前的猜测是 stderr 和 stdout 是在不同的线程中处理的,因此结果将没有特定的顺序显示。
由于来自 Logger 的信息在 Eclipse 控制台中也是红色的,我的猜测是它使用 stderr 来显示消息?是这样吗?如果是这样,有没有办法解决乱序的问题?谢谢。