我试图从junit测试中输出BDD,如下所示:
Feature: Adv Name Search
Scenario: Search by name v1
Given I am at the homepage
When I search for name Brad Pitt
And I click the search button2
Then I expect to see results with name 'Brad Pitt'在IntelliJ IDE中运行时,这将显示得很好,但是在Gradle中运行时不会显示任何内容。我做了一些研究,并启用了测试showStandardStreams布尔值。
在我的build.gradle文件中我添加了..。
test {
useJUnitPlatform()
testLogging {
showStandardStreams = true
}
}这会产生..。
> Task :test
Adv Name Search STANDARD_OUT
Feature: Adv Name Search
Tests the advanced name search feature in IMDB
Adv Name Search > Search by name v1 STANDARD_OUT
Scenario: Search by name v1
Given I am at the homepage
When I search for name Brad Pitt
And I click the search button2
Then I expect to see results with name 'Brad Pitt' ..。这非常接近,但我并不想看到gradle的输出(带有STANDARD_OUT +额外空白行的行)。
Adv Name Search STANDARD_OUT是否有一种方法可以避免在test部分中显示额外的Gradle日志记录?
或者我的测试根本不应该使用System.out.println,而是使用正确的日志记录(例如。log4j) + gradle配置来显示这些?
如有任何帮助/建议,我们将不胜感激。
最新情况(1)
如果有人想要快速克隆和https://github.com/bobmarks/stackoverflow-junit5-gradle,我已经在./gradlew clean test中创建了一个最小可复制的示例。
发布于 2021-12-04 16:54:13
您可以用以下内容替换test { … }配置,以获得所需的内容:
test {
useJUnitPlatform()
systemProperty "file.encoding", "utf-8"
test {
onOutput { descriptor, event ->
if (event.destination == TestOutputEvent.Destination.StdOut) {
logger.lifecycle(event.message.replaceFirst(/\s+$/, ''))
}
}
}
}也见onOutput。
FWIW,我最初发布了以下(不完整)答案,结果是集中在配置测试日志的错误方法上:
我不相信这是可能的。让我解释一下原因。 查看生成您不想看到的行的代码,似乎不可能简单地以不同的方式配置这些代码:
因此,更改标准输出的记录方式可能不会被更改。
但是,在测试中使用适当的记录器怎么样?我怀疑这样做是否有效:
发布于 2021-11-28 10:37:47
可以做的一件事是在displayGranuality中设置testLogging选项属性。
从文件中
要记录的事件的显示粒度。例如,如果设置为0,方法级事件将显示为"Test > Test x> org.SomeClass > org.someMethod“。如果设置为2,相同的事件将显示为"org.someClass > org.someMethod”。
https://stackoverflow.com/questions/70028116
复制相似问题