By default, gradle test displays only the test summary.
% gradle test
BUILD SUCCESSFUL in 4s
6 actionable tasks: 3 executed, 3 up-to-date
P.S Gradle test generates the detailed tests’ result at the build/reports/tests/test/index.html page.
P.S Tested with Gradle 6.7.1
1. Display test result in the console.
1.1 We add the testLogging events to tell Gradle what kind of test events should display in the console.
test {
testLogging {
events "PASSED", "SKIPPED", "FAILED", "STANDARD_OUT", "STANDARD_ERROR"
}
}
1.2 Review the TestLogEvent, it consist of 6 events:
- FAILED – A test has failed.
- PASSED – A test has passed.
- SKIPPED – A test has been skipped.
- STANDARD_ERROR – A test has written a message to standard error.
- STANDARD_OUT – A test has written a message to standard out.
- STARTED – A test has started.
Generally, the following 3 events should be enough for most use cases.
test {
testLogging {
events "PASSED", "SKIPPED", "FAILED"
}
}
1.3 For examples:
% gradle test
DummyTest > test_a_ok() FAILED
org.opentest4j.AssertionFailedError at DummyTest.java:11
DummyTest > test_b_ok() PASSED
LogParserTest > test_invalid_request_ok() PASSED
BUILD SUCCESSFUL in 3s
2. DEMO
2.1 Review a JUnit 5 @ParameterizedTest unit tests to test the bad user agents.
package com.mkyong.security.rule;
import com.mkyong.security.log.LogLine;
import com.mkyong.security.rules.SecurityRule;
import com.mkyong.security.rules.SecurityRuleID;
import com.mkyong.security.rules.ValidateResult;
import com.mkyong.security.rules.impl.BadUserAgentSecurityRuleImpl;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class BadUserAgentSecurityRuleTest {
private static final SecurityRule RULE = new BadUserAgentSecurityRuleImpl();
@ParameterizedTest(name = "#{index} - Bad User Agent={0}")
@ValueSource(strings = {
"python", "java", "scrapy", "go-http", "HTTrack", "WebCopy",
"PYTHON", "Java", "SCrapy", "Go-http", "httrack", "WEBCopy",
"httpclient", "wget", "curl",
"Apache-HttpClient/4.3.6 (java 1.5)",
"Scrapy/2.3.0 (+https://scrapy.org)",
"python-requests/2.24.0",
"p2/1.1.201.v20161115-1927 (Java 1.8.0_121-b13)",
"-",
"",
" ",
" "
})
void test_bad_user_agent(String userAgent) {
LogLine logLine = new LogLine();
logLine.setUserAgent(userAgent);
ValidateResult result = RULE.isValid(logLine);
assertEquals(false, result.isValid());
assertEquals(SecurityRuleID.BAD_USER_AGENT, result.getSecurityRuleIds());
assertEquals(userAgent, result.getTest());
assertTrue(result.getMatches().size() >= 1);
}
}
2.2 We add below content to the build.gradle file.
test {
testLogging {
events "PASSED", "SKIPPED", "FAILED"
}
}
2.3 Run tests from a single unit test class BadUserAgentSecurityRuleTest.
% gradle cleanTest test --tests BadUserAgentSecurityRuleTest
> Task :test
BadUserAgentSecurityRuleTest > #1 - Bad User Agent=python PASSED
BadUserAgentSecurityRuleTest > #2 - Bad User Agent=java PASSED
BadUserAgentSecurityRuleTest > #3 - Bad User Agent=scrapy PASSED
BadUserAgentSecurityRuleTest > #4 - Bad User Agent=go-http PASSED
BadUserAgentSecurityRuleTest > #5 - Bad User Agent=HTTrack PASSED
BadUserAgentSecurityRuleTest > #6 - Bad User Agent=WebCopy PASSED
BadUserAgentSecurityRuleTest > #7 - Bad User Agent=PYTHON PASSED
BadUserAgentSecurityRuleTest > #8 - Bad User Agent=Java PASSED
BadUserAgentSecurityRuleTest > #9 - Bad User Agent=SCrapy PASSED
BadUserAgentSecurityRuleTest > #10 - Bad User Agent=Go-http PASSED
BadUserAgentSecurityRuleTest > #11 - Bad User Agent=httrack PASSED
BadUserAgentSecurityRuleTest > #12 - Bad User Agent=WEBCopy PASSED
BadUserAgentSecurityRuleTest > #13 - Bad User Agent=httpclient PASSED
BadUserAgentSecurityRuleTest > #14 - Bad User Agent=wget PASSED
BadUserAgentSecurityRuleTest > #15 - Bad User Agent=curl PASSED
BadUserAgentSecurityRuleTest > #16 - Bad User Agent=Apache-HttpClient/4.3.6 (java 1.5) PASSED
BadUserAgentSecurityRuleTest > #17 - Bad User Agent=Scrapy/2.3.0 (+https://scrapy.org) PASSED
BadUserAgentSecurityRuleTest > #18 - Bad User Agent=python-requests/2.24.0 PASSED
BadUserAgentSecurityRuleTest > #19 - Bad User Agent=p2/1.1.201.v20161115-1927 (Java 1.8.0_121-b13) PASSED
BadUserAgentSecurityRuleTest > #20 - Bad User Agent=- PASSED
BadUserAgentSecurityRuleTest > #21 - Bad User Agent= PASSED
BadUserAgentSecurityRuleTest > #22 - Bad User Agent= PASSED
BadUserAgentSecurityRuleTest > #23 - Bad User Agent= PASSED
BUILD SUCCESSFUL in 2s
7 actionable tasks: 4 executed, 3 up-to-date
Is there an equivalent way to control logging when NOT testing?