Skip to content
Merged
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
Expand Up @@ -37,6 +37,11 @@ public class JavaTestItem {

private String jdtHandler;

/**
* Optional field for project item.
*/
private String[] natureIds;

public JavaTestItem() {}

public JavaTestItem(String displayName, String fullName, String project, String uri,
Expand Down Expand Up @@ -132,6 +137,14 @@ public void setProjectName(String projectName) {
this.projectName = projectName;
}

public String[] getNatureIds() {
return natureIds;
}

public void setNatureIds(String[] natureIds) {
this.natureIds = natureIds;
}

public void addChild(JavaTestItem child) {
if (this.children == null) {
this.children = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import com.microsoft.java.test.plugin.model.TestLevel;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IMethod;
Expand All @@ -38,21 +39,26 @@ public class TestItemUtils {
public static JavaTestItem constructJavaTestItem(IJavaElement element, TestLevel level, TestKind kind)
throws JavaModelException {
final String displayName;
String uri = null;
if (element instanceof IJavaProject) {
final IJavaProject javaProject = (IJavaProject) element;
final IProject project = javaProject.getProject();
if (ProjectUtils.isVisibleProject(project)) {
displayName = project.getName();
} else {
displayName = ProjectUtils.getProjectRealFolder(project).lastSegment();
final IPath realPath = ProjectUtils.getProjectRealFolder(project);
displayName = realPath.lastSegment();
uri = realPath.toFile().toURI().toString();
}
} else if (element instanceof IPackageFragment && ((IPackageFragment) element).isDefaultPackage()) {
displayName = DEFAULT_PACKAGE_NAME;
} else {
displayName = JavaElementLabels.getElementLabel(element, JavaElementLabels.ALL_DEFAULT);
}
final String fullName = parseFullName(element, level);
final String uri = JDTUtils.getFileURI(element.getResource());
if (uri == null) {
uri = JDTUtils.getFileURI(element.getResource());
}
Range range = null;
if (level == TestLevel.CLASS || level == TestLevel.METHOD) {
range = parseTestItemRange(element);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,19 @@ public static List<JavaTestItem> findJavaProjects(List<Object> arguments, IProgr
continue;
}

final TestKind testKind;
final List<TestKind> testKinds = TestKindProvider.getTestKindsFromCache(project);
if (testKinds.isEmpty()) {
testKind = TestKind.None;
} else {
testKind = testKinds.get(0);
}

try {
resultList.add(TestItemUtils.constructJavaTestItem(project, TestLevel.PROJECT, TestKind.None));
} catch (JavaModelException e) {
final JavaTestItem item = TestItemUtils.constructJavaTestItem(project, TestLevel.PROJECT, testKind);
item.setNatureIds(project.getProject().getDescription().getNatureIds());
resultList.add(item);
} catch (CoreException e) {
JUnitPlugin.logError("Failed to parse project item: " + project.getElementName());
}
}
Expand Down Expand Up @@ -423,13 +433,21 @@ public static List<JavaTestItem> resolvePath(List<Object> arguments, IProgressMo
if (project == null) {
return Collections.emptyList();
}
result.add(TestItemUtils.constructJavaTestItem(project, TestLevel.PROJECT, TestKind.None));

final TestKind testKind;
final List<TestKind> testKinds = TestKindProvider.getTestKindsFromCache(project);
if (testKinds.isEmpty()) {
return Collections.emptyList();
} else {
testKind = testKinds.get(0);
}
result.add(TestItemUtils.constructJavaTestItem(project, TestLevel.PROJECT, testKind));

final IPackageFragment packageFragment = (IPackageFragment) unit.getParent();
if (packageFragment == null || !(packageFragment instanceof IPackageFragment)) {
return Collections.emptyList();
}
result.add(TestItemUtils.constructJavaTestItem(packageFragment, TestLevel.PACKAGE, TestKind.None));
result.add(TestItemUtils.constructJavaTestItem(packageFragment, TestLevel.PACKAGE, testKind));
}

return result;
Expand Down
11 changes: 3 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,14 +69,9 @@
"when": "java:serverMode == LightWeight"
},
{
"view": "testExplorer",
"contents": "%contributes.viewsWelcome.noProjectWithProjectManagerInstalled%",
"when": "workspaceFolderCount == 0 && java:projectManagerActivated && java:serverMode != LightWeight"
},
{
"view": "testExplorer",
"contents": "%contributes.viewsWelcome.noProjectWithOutProjectManagerInstalled%",
"when": "workspaceFolderCount == 0 && !java:projectManagerActivated && java:serverMode != LightWeight"
"view": "testing",
"contents": "Click below button to configure a test framework for your project.\n[Enable Java Tests](command:_java.test.enableTests)",
"when": "java:needSetupTests"
}
],
"menus": {
Expand Down
3 changes: 1 addition & 2 deletions package.nls.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,5 @@
"configuration.java.test.config.sourcePaths.description": "Specify extra source paths when debugging the tests",
"configuration.java.test.config.preLaunchTask.description": "Specify the label of a task specified in tasks.json (in the workspace's .vscode folder). The task will be launched before the start of testing.",
"contributes.viewsWelcome.inLightWeightMode": "No test cases are listed because the Java Language Server is currently running in [LightWeight Mode](https://aka.ms/vscode-java-lightweight). To show test cases, click on the button to switch to Standard Mode.\n[Switch to Standard Mode](command:java.server.mode.switch?%5B%22Standard%22,true%5D)",
"contributes.viewsWelcome.noProjectWithProjectManagerInstalled": "No folder opened in Visual Studio Code. You can [open a Java project](command:_java.project.open), or create a new Java project by clicking the button below.\n[Create Java Project](command:java.project.create)",
"contributes.viewsWelcome.noProjectWithOutProjectManagerInstalled": "No folder opened in Visual Studio Code."
"contributes.viewsWelcome.enableTests": "Click below button to configure a test framework for your project.\n[Enable Java Tests](command:_java.test.enableTests)"
}
3 changes: 1 addition & 2 deletions package.nls.zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,5 @@
"configuration.java.test.config.sourcePaths.description": "设定调试测试用例时的源代码路径",
"configuration.java.test.config.preLaunchTask.description": "在 tasks.json(在工作空间的.vscode文件夹中)中某个任务的名称。该任务会在启动测试之前被执行",
"contributes.viewsWelcome.inLightWeightMode": "由于 Java 语言服务正运行在 [LightWeight 模式](https://aka.ms/vscode-java-lightweight)下,因此测试用例将不会展示在该视图中。如果您需要展示测试用例,可以点击下方按钮将 Java 语言服务切换至 Standard 模式。\n[切换至 Standard 模式](command:java.server.mode.switch?%5B%22Standard%22,true%5D)",
"contributes.viewsWelcome.noProjectWithProjectManagerInstalled": "当前没有已打开的文件夹,您可以[打开一个 Java 项目](command:_java.project.open),或点击下方按钮创建一个新的 Java 项目。\n[创建 Java 项目](command:java.project.create)",
"contributes.viewsWelcome.noProjectWithOutProjectManagerInstalled": "当前没有已打开的文件夹。"
"contributes.viewsWelcome.enableTests": "点击下方按钮为你的项目添加一个测试框架\n[启用 Java 测试](command:_java.test.enableTests)"
}
Loading