Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="/inheritance-binary-parent/target/test-classes"/>
<classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
<classpathentry kind="output" path="target/test-classes"/>
</classpath>
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>inheritance-binary-child</name>
<comment></comment>
<projects></projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments></arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package example;

public class InheritanceBinaryChildTest extends InheritanceBinaryBaseTest {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
<classpathentry kind="output" path="target/test-classes"/>
</classpath>
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>inheritance-binary-parent</name>
<comment></comment>
<projects></projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments></arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package example;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;

public class InheritanceBinaryBaseTest {
@Test
void base(TestInfo info) {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="/inheritance-parent"/>
<classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
<classpathentry kind="output" path="target/test-classes"/>
</classpath>
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>inheritance-child</name>
<comment></comment>
<projects>
<project>inheritance-parent</project>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments></arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package example;

import org.junit.jupiter.api.Test;

public class InheritanceChildTest extends InheritanceBaseTest {
@Test
void child() {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="output" path="target/test-classes"/>
</classpath>
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>inheritance-junit4</name>
<comment></comment>
<projects></projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments></arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package example;

import org.junit.Test;

public class JUnit4BaseTest {
@Test
public void inherited() {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package example;

public class JUnit4ChildTest extends JUnit4BaseTest {
@Override
public void inherited() {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
<classpathentry kind="output" path="target/test-classes"/>
</classpath>
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>inheritance-parent</name>
<comment></comment>
<projects></projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments></arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package example;

import org.junit.jupiter.api.Test;

public class InheritanceBaseTest {
@Test
void base() {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package example;

import org.junit.jupiter.api.Test;

public class InheritanceBaseTest {
@Test
void base() {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package example;

import org.junit.jupiter.api.Test;

public class InheritanceChildTest extends InheritanceBaseTest {
@Test
void child() {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package example;

import org.junit.jupiter.api.Test;

public class InheritanceOverrideTest extends InheritanceBaseTest {
@Test
@Override
void base() {
}

@Test
void extra() {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package example;

public class InheritanceUnannotatedOverrideTest extends InheritanceBaseTest {
@Override
void base() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,16 @@
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaCore;
import org.junit.Test;

import com.microsoft.java.test.plugin.AbstractProjectsManagerBasedTest;
import com.microsoft.java.test.plugin.WorkspaceHelper;
import com.microsoft.java.test.plugin.model.Response;
import com.microsoft.java.test.plugin.model.JavaTestItem;
import com.microsoft.java.test.plugin.util.TestSearchUtils;
import com.google.gson.Gson;

public class JUnitLaunchConfigurationDelegateTest extends AbstractProjectsManagerBasedTest {
Expand Down Expand Up @@ -82,4 +86,86 @@ public void testAddOpensForAllSelectedPackagesInModularProject() throws Exceptio
assertEquals("--add-opens", vmArguments.get(vmArguments.indexOf(secondPackageOpen) - 1));
}

@Test
public void testInheritedMethodLaunchesAgainstChildClass() throws Exception {
importProjects(Arrays.asList("inheritance-parent", "inheritance-child"));
final IProject childProject = WorkspaceHelper.getProject("inheritance-child");
final IJavaProject childJavaProject = JavaCore.create(childProject);
final IType parentType = JavaCore.create(WorkspaceHelper.getProject("inheritance-parent"))
.findType("example.InheritanceBaseTest");

final Map<String, Object> request = new LinkedHashMap<>();
request.put("projectName", childProject.getName());
request.put("testLevel", 6);
request.put("testKind", 0);
request.put("testNames", Arrays.asList(parentType.getMethod("base", new String[0]).getHandleIdentifier()));
request.put("executionClassNames", Arrays.asList("example.InheritanceChildTest"));

final Response<JUnitLaunchArguments> response = JUnitLaunchUtils.resolveLaunchArgument(
Arrays.asList(new Gson().toJson(request)), new NullProgressMonitor());

assertEquals(0, response.getStatus());
assertEquals(childJavaProject.getElementName(), response.getBody().projectName);
assertTrue(Arrays.asList(response.getBody().programArguments)
.contains("example.InheritanceChildTest:base"));
}

@Test
public void testBinaryMethodWithParametersLaunchesAgainstChildClass() throws Exception {
final IProject project = importProjects("preview-junit").get(0);
final IJavaProject javaProject = JavaCore.create(project);
final IType assertions = javaProject.findType("org.junit.jupiter.api.Assertions");
assertNotNull(assertions);
final IMethod binaryMethod = assertions.getMethod("assertEquals",
new String[] { "Ljava.lang.Object;", "Ljava.lang.Object;" });
assertTrue(binaryMethod.exists());
assertTrue(binaryMethod.getCompilationUnit() == null);

final Map<String, Object> request = new LinkedHashMap<>();
request.put("projectName", javaProject.getElementName());
request.put("testLevel", 6);
request.put("testKind", 0);
request.put("testNames", Arrays.asList(binaryMethod.getHandleIdentifier()));
request.put("executionClassNames", Arrays.asList("example.InheritanceChildTest"));

final Response<JUnitLaunchArguments> response = JUnitLaunchUtils.resolveLaunchArgument(
Arrays.asList(new Gson().toJson(request)), new NullProgressMonitor());

assertEquals(0, response.getStatus());
assertTrue(Arrays.asList(response.getBody().programArguments)
.contains("example.InheritanceChildTest:assertEquals(java.lang.Object,java.lang.Object)"));
}

@Test
public void testInheritedBinaryMethodWithParametersLaunchesAgainstChildClass() throws Exception {
importProjects(Arrays.asList("inheritance-binary-parent", "inheritance-binary-child"));
final IJavaProject javaProject = JavaCore.create(WorkspaceHelper.getProject("inheritance-binary-child"));
final IType childType = javaProject.findType("example.InheritanceBinaryChildTest");
assertNotNull(childType);

final List<JavaTestItem> methods = TestSearchUtils.findDirectTestChildrenForClass(
Arrays.asList(childType.getHandleIdentifier()), new NullProgressMonitor());
final JavaTestItem inherited = methods.stream()
.filter(item -> item.getFullName().contains("#base"))
.findFirst().orElse(null);
assertNotNull(inherited);
final IMethod binaryMethod = (IMethod)
JavaCore.create(inherited.getJdtHandler());
assertTrue(binaryMethod.getCompilationUnit() == null);

final Map<String, Object> request = new LinkedHashMap<>();
request.put("projectName", javaProject.getElementName());
request.put("testLevel", 6);
request.put("testKind", 0);
request.put("testNames", Arrays.asList(inherited.getJdtHandler()));
request.put("executionClassNames", Arrays.asList("example.InheritanceBinaryChildTest"));

final Response<JUnitLaunchArguments> response = JUnitLaunchUtils.resolveLaunchArgument(
Arrays.asList(new Gson().toJson(request)), new NullProgressMonitor());

assertEquals(0, response.getStatus());
assertTrue(Arrays.asList(response.getBody().programArguments)
.contains("example.InheritanceBinaryChildTest:base(org.junit.jupiter.api.TestInfo)"));
}

}
Loading