1 /*
2 * Copyright (c) 2022-2023. Roland T. Lichti, Kaiserpfalz EDV-Service.
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <https://www.gnu.org/licenses/>.
16 */
17
18 package de.kaiserpfalzedv.commons.test;
19
20 import lombok.Setter;
21 import org.junit.jupiter.api.AfterEach;
22 import org.slf4j.Logger;
23 import org.slf4j.LoggerFactory;
24 import org.slf4j.MDC;
25
26 import jakarta.validation.constraints.NotNull;
27
28 /**
29 * AbstractTestBase -- A base class for common junit tests.
30 *
31 * @author klenkes74 {@literal <rlichti@kaiserpfalz-edv.de>}
32 * @since 2.0.0 2022-01-18
33 */
34 @Setter
35 public class AbstractTestBase {
36 private static final String MDC_TEST_SUITE_KEY = "test-class";
37 private static final String MDC_TEST_KEY = "test";
38
39 private Logger log = LoggerFactory.getLogger("test");
40 private String testSuite = "unspecified";
41
42 public void setTestSuite(final String suite) {
43 // replace due to Quarkus subclassing ...
44 testSuite = suite.replace("_Subclass", "");
45 }
46
47 protected void startTest(@NotNull final String test, Object... params) {
48 MDC.put(MDC_TEST_SUITE_KEY, testSuite);
49 MDC.put(MDC_TEST_KEY, test);
50
51 log.info("Starting test ... test='{}', params={}", test, params);
52 }
53
54 @AfterEach
55 void removeTestFromMDC() {
56 log.debug("Test finished. test='{}'", MDC.get(MDC_TEST_KEY));
57
58 MDC.remove(MDC_TEST_KEY);
59 MDC.remove(MDC_TEST_SUITE_KEY);
60 }
61 }