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 を使用してメッセージを表示していると思いますか? そうですか?もしそうなら、めちゃくちゃな順序の問題を解決する方法はありますか? ありがとう。