From e7873c9a99a2f904a0e0401f2e3d09dbe1d7eb06 Mon Sep 17 00:00:00 2001 From: Fred Bricon Date: Mon, 20 Apr 2020 19:14:29 +0200 Subject: [PATCH] Display test names in a more user-friendly way Signed-off-by: Fred Bricon --- org.eclipse.lemminx/pom.xml | 5 +++ .../junit/CamelCaseDisplayNameGenerator.java | 36 +++++++++++++++ .../CamelCaseDisplayNameGeneratorTest.java | 45 +++++++++++++++++++ .../test/resources/junit-platform.properties | 1 + pom.xml | 35 ++++++++++++--- 5 files changed, 117 insertions(+), 5 deletions(-) create mode 100644 org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/junit/CamelCaseDisplayNameGenerator.java create mode 100644 org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/junit/CamelCaseDisplayNameGeneratorTest.java create mode 100644 org.eclipse.lemminx/src/test/resources/junit-platform.properties diff --git a/org.eclipse.lemminx/pom.xml b/org.eclipse.lemminx/pom.xml index 5fd0672a6..0461c4098 100644 --- a/org.eclipse.lemminx/pom.xml +++ b/org.eclipse.lemminx/pom.xml @@ -168,6 +168,11 @@ junit-jupiter-engine test + + org.junit.jupiter + junit-jupiter-params + test + org.eclipse.jetty jetty-server diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/junit/CamelCaseDisplayNameGenerator.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/junit/CamelCaseDisplayNameGenerator.java new file mode 100644 index 000000000..d585366ff --- /dev/null +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/junit/CamelCaseDisplayNameGenerator.java @@ -0,0 +1,36 @@ +/******************************************************************************* +* Copyright (c) 2020 Red Hat Inc. and others. +* All rights reserved. This program and the accompanying materials +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v20.html +* +* SPDX-License-Identifier: EPL-2.0 +* +* Contributors: +* Red Hat Inc. - initial API and implementation +*******************************************************************************/ +package org.eclipse.lemminx.junit; + +import java.lang.reflect.Method; + +import org.junit.jupiter.api.DisplayNameGenerator; + +public class CamelCaseDisplayNameGenerator extends DisplayNameGenerator.Standard { + + public String generateDisplayNameForClass(Class testClass) { + return splitCamelCase(super.generateDisplayNameForClass(testClass)); + } + + public String generateDisplayNameForNestedClass(Class nestedClass) { + return splitCamelCase(super.generateDisplayNameForNestedClass(nestedClass)); + } + + public String generateDisplayNameForMethod(Class testClass, Method testMethod) { + return splitCamelCase(testMethod.getName()); + } + + String splitCamelCase(String text) { + //See https://stackoverflow.com/a/15370765/753170 + return text.replaceAll("([A-Z])([A-Z])([a-z])|([a-z])([A-Z])", "$1$4 $2$3$5"); + } +} \ No newline at end of file diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/junit/CamelCaseDisplayNameGeneratorTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/junit/CamelCaseDisplayNameGeneratorTest.java new file mode 100644 index 000000000..61faf42c6 --- /dev/null +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/junit/CamelCaseDisplayNameGeneratorTest.java @@ -0,0 +1,45 @@ +/******************************************************************************* +* Copyright (c) 2020 Red Hat Inc. and others. +* All rights reserved. This program and the accompanying materials +* which accompanies this distribution, and is available at +* http://www.eclipse.org/legal/epl-v20.html +* +* SPDX-License-Identifier: EPL-2.0 +* +* Contributors: +* Red Hat Inc. - initial API and implementation +*******************************************************************************/ +package org.eclipse.lemminx.junit; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +// @formatter:off +public class CamelCaseDisplayNameGeneratorTest { + + private CamelCaseDisplayNameGenerator nameGenerator; + + @BeforeEach + public void setup() { + nameGenerator = new CamelCaseDisplayNameGenerator(); + } + + @Test + public void generateDisplayNameForClass() { + assertEquals("Camel Case Display Name Generator", nameGenerator.generateDisplayNameForClass(nameGenerator.getClass())); + } + + @ParameterizedTest(name = "{index} => text={0}") + @CsvSource({ "ABCD, ABCD", + "AbCd, Ab Cd", + "abCd, ab Cd", + "aBCd, a BCd", + "a BC d, a BC d" }) + public void splitCamelCase(String text, String expectedResult) { + assertEquals(expectedResult, nameGenerator.splitCamelCase(text)); + } +} \ No newline at end of file diff --git a/org.eclipse.lemminx/src/test/resources/junit-platform.properties b/org.eclipse.lemminx/src/test/resources/junit-platform.properties new file mode 100644 index 000000000..a3aa7f7ed --- /dev/null +++ b/org.eclipse.lemminx/src/test/resources/junit-platform.properties @@ -0,0 +1 @@ +junit.jupiter.displayname.generator.default = org.eclipse.lemminx.junit.CamelCaseDisplayNameGenerator \ No newline at end of file diff --git a/pom.xml b/pom.xml index 2450877ae..d6b60c400 100644 --- a/pom.xml +++ b/pom.xml @@ -8,6 +8,7 @@ UTF-8 0.9.0 + 5.6.1 https://github.com/eclipse/lemminx @@ -21,8 +22,8 @@ scm:git:git@github.com:eclipse/lemminx.git scm:git:git@github.com:eclipse/lemminx.git https://github.com/eclipse/lemminx - HEAD - + HEAD + org.eclipse.lemminx @@ -57,13 +58,19 @@ org.junit.jupiter junit-jupiter-api - 5.6.1 + ${junit.version} test org.junit.jupiter junit-jupiter-engine - 5.6.1 + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-params + ${junit.version} test @@ -88,9 +95,27 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M1 + 3.0.0-M4 random + + false + false + false + false + true + + + false + UTF-8 + false + + + false + false + true + false +