Stderr 和 stdout 在 testcontainers-java 中被换行符随机中断
Stderr and stdout interrupted randomly by newline chars in testcontainers-java
我正在 运行使用 Testcontainers 进行 Junit5 测试,在测试中我正在使用 Maven 启动图像以执行一些命令。
例如,我创建了一个测试,只是为了将 mvn
版本打印到标准输出:
this.net = Network.newNetwork();
this.clientContainer = new GenericContainer<>("maven:3.6.3-jdk-11")
.withWorkingDirectory("/w")
.withClasspathResourceMapping("maven-settings.xml", "/w/settings.xml", BindMode.READ_ONLY)
.withStartupTimeout(Duration.ofSeconds(1))
.withNetwork(net)
.withCommand("tail", "-f", "/dev/null");
this.clientContainer.start();
ExecResult res =this.clientContainer.execInContainer(
StandardCharsets.UTF_8,
"mvn", "-B", "-version"
);
System.out.println("stdout: " + res.getStdout());
但是输出看起来很奇怪,因为它在标准输出中有太多的换行符:
stdout: Apache
M
a
v
en
3.6.
3
(cec
e
d
d
3
4
3
0
0
2
6
9
6
d
0
a
b
b
5
0
b
3
2
b
5
4
1
b
8
a
6
b
a
2
8
8
3
f
)
M
a
v
e
n
h
o
m
e
:
/
u
s
r
/
s
h
a
r
e
/
m
a
v
e
n
J
a
v
a
v
e
r
s
i
o
n
:
1
1
.
0
.
1
0
,
v
e
n
d
o
r
:
O
r
a
c
l
e
C
o
r
p
o
r
a
t
i
o
n
,
r
u
n
t
i
m
e
:
/
u
s
r
/
l
o
c
a
l
/
o
p
e
n
j
d
k
-
1
1
D
e
f
a
u
l
t
l
o
c
a
l
e
:
e
n
,
p
l
a
t
f
o
r
m
e
n
c
o
d
i
n
g
:
U
T
F
-
8
O
S
n
a
m
e
:
"
l
i
n
u
x
"
,
v
e
r
s
i
o
n
:
"
5
.
1
0
.
8
_
1
"
,
a
r
c
h
:
"
a
m
d
6
4
"
,
f
a
m
i
l
y
:
"
u
n
i
x
"
这可能是什么问题?我尝试 运行 使用和不使用 -B
选项,尝试其他 Maven 命令,并使用指定的字符集编码进行测试。
我正在 运行使用 Testcontainers 进行 Junit5 测试,在测试中我正在使用 Maven 启动图像以执行一些命令。
例如,我创建了一个测试,只是为了将 mvn
版本打印到标准输出:
this.net = Network.newNetwork();
this.clientContainer = new GenericContainer<>("maven:3.6.3-jdk-11")
.withWorkingDirectory("/w")
.withClasspathResourceMapping("maven-settings.xml", "/w/settings.xml", BindMode.READ_ONLY)
.withStartupTimeout(Duration.ofSeconds(1))
.withNetwork(net)
.withCommand("tail", "-f", "/dev/null");
this.clientContainer.start();
ExecResult res =this.clientContainer.execInContainer(
StandardCharsets.UTF_8,
"mvn", "-B", "-version"
);
System.out.println("stdout: " + res.getStdout());
但是输出看起来很奇怪,因为它在标准输出中有太多的换行符:
stdout: Apache
M
a
v
en
3.6.
3
(cec
e
d
d
3
4
3
0
0
2
6
9
6
d
0
a
b
b
5
0
b
3
2
b
5
4
1
b
8
a
6
b
a
2
8
8
3
f
)
M
a
v
e
n
h
o
m
e
:
/
u
s
r
/
s
h
a
r
e
/
m
a
v
e
n
J
a
v
a
v
e
r
s
i
o
n
:
1
1
.
0
.
1
0
,
v
e
n
d
o
r
:
O
r
a
c
l
e
C
o
r
p
o
r
a
t
i
o
n
,
r
u
n
t
i
m
e
:
/
u
s
r
/
l
o
c
a
l
/
o
p
e
n
j
d
k
-
1
1
D
e
f
a
u
l
t
l
o
c
a
l
e
:
e
n
,
p
l
a
t
f
o
r
m
e
n
c
o
d
i
n
g
:
U
T
F
-
8
O
S
n
a
m
e
:
"
l
i
n
u
x
"
,
v
e
r
s
i
o
n
:
"
5
.
1
0
.
8
_
1
"
,
a
r
c
h
:
"
a
m
d
6
4
"
,
f
a
m
i
l
y
:
"
u
n
i
x
"
这可能是什么问题?我尝试 运行 使用和不使用 -B
选项,尝试其他 Maven 命令,并使用指定的字符集编码进行测试。