Skip to content

Commit

Permalink
#190 JUnit4UniqueIdBuild now returns UniqueId objects
Browse files Browse the repository at this point in the history
  • Loading branch information
jlink committed Mar 15, 2016
1 parent ed5b0a3 commit d87f036
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 26 deletions.
Expand Up @@ -36,6 +36,7 @@
import org.junit.gen5.api.Test; import org.junit.gen5.api.Test;
import org.junit.gen5.engine.TestDescriptor; import org.junit.gen5.engine.TestDescriptor;
import org.junit.gen5.engine.TestTag; import org.junit.gen5.engine.TestTag;
import org.junit.gen5.engine.UniqueId;
import org.junit.gen5.engine.discovery.ClassFilter; import org.junit.gen5.engine.discovery.ClassFilter;
import org.junit.gen5.engine.discovery.MethodSelector; import org.junit.gen5.engine.discovery.MethodSelector;
import org.junit.gen5.engine.junit4.samples.PlainOldJavaClassWithoutAnyTest; import org.junit.gen5.engine.junit4.samples.PlainOldJavaClassWithoutAnyTest;
Expand Down Expand Up @@ -90,7 +91,7 @@ void resolvesIgnoredJUnit4TestClass() {
assertFalse(runnerDescriptor.isContainer()); assertFalse(runnerDescriptor.isContainer());
assertTrue(runnerDescriptor.isTest()); assertTrue(runnerDescriptor.isTest());
assertEquals(testClass.getName(), runnerDescriptor.getDisplayName()); assertEquals(testClass.getName(), runnerDescriptor.getDisplayName());
assertEquals(uniqueIdForClass(testClass), runnerDescriptor.getUniqueId()); assertEquals(uniqueIdForClass(testClass), runnerDescriptor.getUniqueIdObject());
assertThat(runnerDescriptor.getChildren()).isEmpty(); assertThat(runnerDescriptor.getChildren()).isEmpty();
} }


Expand Down Expand Up @@ -174,12 +175,12 @@ void resolvesJUnit4TestCaseWithOverloadedMethod() {


TestDescriptor testMethodDescriptor = testMethodDescriptors.get(0); TestDescriptor testMethodDescriptor = testMethodDescriptors.get(0);
assertEquals("theory", testMethodDescriptor.getDisplayName()); assertEquals("theory", testMethodDescriptor.getDisplayName());
assertEquals(uniqueIdForMethod(testClass, "theory", "0"), testMethodDescriptor.getUniqueId()); assertEquals(uniqueIdForMethod(testClass, "theory", "0"), testMethodDescriptor.getUniqueIdObject());
assertClassSource(testClass, testMethodDescriptor); assertClassSource(testClass, testMethodDescriptor);


testMethodDescriptor = testMethodDescriptors.get(1); testMethodDescriptor = testMethodDescriptors.get(1);
assertEquals("theory", testMethodDescriptor.getDisplayName()); assertEquals("theory", testMethodDescriptor.getDisplayName());
assertEquals(uniqueIdForMethod(testClass, "theory", "1"), testMethodDescriptor.getUniqueId()); assertEquals(uniqueIdForMethod(testClass, "theory", "1"), testMethodDescriptor.getUniqueIdObject());
assertClassSource(testClass, testMethodDescriptor); assertClassSource(testClass, testMethodDescriptor);
} }


Expand Down Expand Up @@ -521,7 +522,7 @@ void resolvesClassForMethodSelectorForClassWithNonFilterableRunner() throws Exce


TestDescriptor runnerDescriptor = getOnlyElement(engineDescriptor.getChildren()); TestDescriptor runnerDescriptor = getOnlyElement(engineDescriptor.getChildren());
assertEquals(testClass.getName(), runnerDescriptor.getDisplayName()); assertEquals(testClass.getName(), runnerDescriptor.getDisplayName());
assertEquals(uniqueIdForClass(testClass), runnerDescriptor.getUniqueId()); assertEquals(uniqueIdForClass(testClass), runnerDescriptor.getUniqueIdObject());
assertThat(runnerDescriptor.getChildren()).isEmpty(); assertThat(runnerDescriptor.getChildren()).isEmpty();
} }


Expand All @@ -537,8 +538,8 @@ void usesCustomUniqueIdsWhenPresent() throws Exception {


TestDescriptor childDescriptor = getOnlyElement(runnerDescriptor.getChildren()); TestDescriptor childDescriptor = getOnlyElement(runnerDescriptor.getChildren());


String prefix = uniqueIdForClass(testClass); UniqueId prefix = uniqueIdForClass(testClass);
assertThat(childDescriptor.getUniqueIdObject().getUniqueString()).startsWith(prefix); assertThat(childDescriptor.getUniqueIdObject().getUniqueString()).startsWith(prefix.getUniqueString());


String customUniqueIdValue = childDescriptor.getUniqueIdObject().getSegments().get(2).getType(); String customUniqueIdValue = childDescriptor.getUniqueIdObject().getSegments().get(2).getType();
assertNotNull(Base64.getDecoder().decode(customUniqueIdValue.getBytes(StandardCharsets.UTF_8)), assertNotNull(Base64.getDecoder().decode(customUniqueIdValue.getBytes(StandardCharsets.UTF_8)),
Expand Down Expand Up @@ -579,17 +580,18 @@ private static void assertRunnerTestDescriptor(TestDescriptor runnerDescriptor,
assertFalse(runnerDescriptor.isTest()); assertFalse(runnerDescriptor.isTest());
assertEquals(testClass.getName(), runnerDescriptor.getDisplayName()); assertEquals(testClass.getName(), runnerDescriptor.getDisplayName());
assertEquals(testClass.getName(), runnerDescriptor.getName()); assertEquals(testClass.getName(), runnerDescriptor.getName());
assertEquals(uniqueIdForClass(testClass), runnerDescriptor.getUniqueId()); assertEquals(uniqueIdForClass(testClass), runnerDescriptor.getUniqueIdObject());
assertClassSource(testClass, runnerDescriptor); assertClassSource(testClass, runnerDescriptor);
} }


private static void assertTestMethodDescriptor(TestDescriptor testMethodDescriptor, Class<?> testClass, private static void assertTestMethodDescriptor(TestDescriptor testMethodDescriptor, Class<?> testClass,
String methodName, String uniqueContainerId) throws Exception { String methodName, UniqueId uniqueContainerId) throws Exception {
assertTrue(testMethodDescriptor.isTest()); assertTrue(testMethodDescriptor.isTest());
assertFalse(testMethodDescriptor.isContainer()); assertFalse(testMethodDescriptor.isContainer());
assertEquals(methodName, testMethodDescriptor.getDisplayName()); assertEquals(methodName, testMethodDescriptor.getDisplayName());
assertEquals(methodName + "(" + testClass.getName() + ")", testMethodDescriptor.getName()); assertEquals(methodName + "(" + testClass.getName() + ")", testMethodDescriptor.getName());
assertEquals(uniqueIdForMethod(uniqueContainerId, testClass, methodName), testMethodDescriptor.getUniqueId()); assertEquals(uniqueIdForMethod(uniqueContainerId, testClass, methodName),
testMethodDescriptor.getUniqueIdObject());
assertThat(testMethodDescriptor.getChildren()).isEmpty(); assertThat(testMethodDescriptor.getChildren()).isEmpty();
assertMethodSource(testClass.getMethod(methodName), testMethodDescriptor); assertMethodSource(testClass.getMethod(methodName), testMethodDescriptor);
} }
Expand All @@ -600,7 +602,7 @@ private static void assertContainerTestDescriptor(TestDescriptor containerDescri
assertFalse(containerDescriptor.isTest()); assertFalse(containerDescriptor.isTest());
assertEquals(testClass.getName(), containerDescriptor.getDisplayName()); assertEquals(testClass.getName(), containerDescriptor.getDisplayName());
assertEquals(testClass.getName(), containerDescriptor.getName()); assertEquals(testClass.getName(), containerDescriptor.getName());
assertEquals(uniqueIdForClasses(suiteClass, testClass), containerDescriptor.getUniqueId()); assertEquals(uniqueIdForClasses(suiteClass, testClass), containerDescriptor.getUniqueIdObject());
assertClassSource(testClass, containerDescriptor); assertClassSource(testClass, containerDescriptor);
} }


Expand All @@ -609,7 +611,7 @@ private static void assertInitializationError(TestDescriptor testDescriptor, Cla
assertTrue(testDescriptor.isTest()); assertTrue(testDescriptor.isTest());
assertFalse(testDescriptor.isContainer()); assertFalse(testDescriptor.isContainer());
assertEquals("initializationError", testDescriptor.getDisplayName()); assertEquals("initializationError", testDescriptor.getDisplayName());
assertEquals(uniqueIdForErrorInClass(testClass, failingClass), testDescriptor.getUniqueId()); assertEquals(uniqueIdForErrorInClass(testClass, failingClass), testDescriptor.getUniqueIdObject());
assertThat(testDescriptor.getChildren()).isEmpty(); assertThat(testDescriptor.getChildren()).isEmpty();
assertClassSource(failingClass, testDescriptor); assertClassSource(failingClass, testDescriptor);
} }
Expand Down
Expand Up @@ -20,37 +20,44 @@
*/ */
public class JUnit4UniqueIdBuilder { public class JUnit4UniqueIdBuilder {


public static String uniqueIdForErrorInClass(Class<?> clazz, Class<?> failingClass) { public static UniqueId uniqueIdForErrorInClass(Class<?> clazz, Class<?> failingClass) {
return uniqueIdForClasses(clazz) + "/[test:initializationError(" + failingClass.getName() + ")]"; return uniqueIdForClasses(clazz).append(JUnit4TestDescriptor.SEGMENT_TYPE_TEST,
"initializationError(" + failingClass.getName() + ")");
} }


public static String uniqueIdForClass(Class<?> clazz) { public static UniqueId uniqueIdForClass(Class<?> clazz) {
return uniqueIdForClasses(clazz); return uniqueIdForClasses(clazz);
} }


public static String uniqueIdForClasses(Class<?> clazz, Class<?>... clazzes) { public static UniqueId uniqueIdForClasses(Class<?> clazz, Class<?>... clazzes) {
String uniqueId = uniqueIdForClass(clazz.getName()); UniqueId uniqueId = uniqueIdForClass(clazz.getName());
for (Class<?> each : clazzes) { for (Class<?> each : clazzes) {
uniqueId += "/[test:" + each.getName() + "]"; uniqueId = uniqueId.append(JUnit4TestDescriptor.SEGMENT_TYPE_TEST, each.getName());
} }
return uniqueId; return uniqueId;
} }


public static String uniqueIdForClass(String fullyQualifiedClassName) { public static UniqueId uniqueIdForClass(String fullyQualifiedClassName) {
UniqueId containerId = engineId(); UniqueId containerId = engineId();
return containerId.append(JUnit4TestDescriptor.SEGMENT_TYPE_RUNNER, fullyQualifiedClassName).getUniqueString(); return containerId.append(JUnit4TestDescriptor.SEGMENT_TYPE_RUNNER, fullyQualifiedClassName);
} }


public static String uniqueIdForMethod(Class<?> testClass, String methodName) { public static UniqueId uniqueIdForMethod(Class<?> testClass, String methodName) {
return uniqueIdForClass(testClass) + "/[test:" + methodName + "(" + testClass.getName() + ")]"; return uniqueIdForClass(testClass).append(JUnit4TestDescriptor.SEGMENT_TYPE_TEST,
methodValue(testClass, methodName));
} }


public static String uniqueIdForMethod(Class<?> testClass, String methodName, String index) { private static String methodValue(Class<?> testClass, String methodName) {
return uniqueIdForClass(testClass) + "/[test:" + methodName + "(" + testClass.getName() + ")[" + index + "]]"; return methodName + "(" + testClass.getName() + ")";
} }


public static String uniqueIdForMethod(String containerId, Class<?> testClass, String methodName) { public static UniqueId uniqueIdForMethod(Class<?> testClass, String methodName, String index) {
return containerId + "/[test:" + methodName + "(" + testClass.getName() + ")]"; return uniqueIdForClass(testClass).append(JUnit4TestDescriptor.SEGMENT_TYPE_TEST,
methodValue(testClass, methodName) + "[" + index + "]");
}

public static UniqueId uniqueIdForMethod(UniqueId containerId, Class<?> testClass, String methodName) {
return containerId.append(JUnit4TestDescriptor.SEGMENT_TYPE_TEST, methodValue(testClass, methodName));
} }


public static UniqueId engineId() { public static UniqueId engineId() {
Expand Down
Expand Up @@ -29,7 +29,7 @@ class UniqueIdSelectorResolverTests {


@Test @Test
void logsWarningOnUnloadableTestClass() { void logsWarningOnUnloadableTestClass() {
String uniqueId = JUnit4UniqueIdBuilder.uniqueIdForClass("foo.bar.UnknownClass"); UniqueId uniqueId = JUnit4UniqueIdBuilder.uniqueIdForClass("foo.bar.UnknownClass");
RecordCollectingLogger logger = new RecordCollectingLogger(); RecordCollectingLogger logger = new RecordCollectingLogger();
UniqueIdSelector selector = UniqueIdSelector.forUniqueId(uniqueId); UniqueIdSelector selector = UniqueIdSelector.forUniqueId(uniqueId);
TestClassCollector collector = new TestClassCollector(); TestClassCollector collector = new TestClassCollector();
Expand Down

0 comments on commit d87f036

Please sign in to comment.