【问题标题】:Change default "Program to Run" in Eclipse launch configuration在 Eclipse 启动配置中更改默认的“要运行的程序”
【发布时间】:2015-08-19 00:05:49
【问题描述】:

我时不时地在 Eclipse 中使用

启动 JUnit 测试

运行方式 > JUnit 插件测试

默认情况下,Eclipse 假定您正在运行需要工作台的东西,并在启动配置的“主要”部分中选择

LaunchConfig > Main > 要运行的程序 > 运行应用程序 > org.eclipse.ui.ide.workbench

我可以理解为什么这是默认设置,但对我(以及我们团队中的所有人)来说,从来没有这样过。我们总是需要运行我们的 JUnit 插件测试作为

LaunchConfig > Main > 要运行的程序 > 运行应用程序 > [无应用] 无头模式

如何更改此默认行为? 我目前使用的是 Eclipse 4.4。

【问题讨论】:

  • 您是否尝试创建特定的 Configuration ?在Run > Run Configurations... 下,然后在Junit Plug-in Test 中创建一个配置。之后会在菜单中使用这个,使用一次后使用默认值
  • 你能解释一下我将如何使用这个新创建的配置吗?并不是说我无法修改特定的启动配置,而是我们有 20k 的 JUnit 测试用例,我希望能够在不进行任何进一步配置的情况下运行每个测试用例。
  • 在操作栏中,单击run asarrow 并从下拉列表中选择您的配置
  • 谢谢。我知道您可以创建新的启动配置。但是您是想说,我可以使用新创建的特定启动配置运行任何旧的、新的和即将到来的 JUnit 测试吗?

标签: java eclipse junit eclipse-plugin ide


【解决方案1】:

似乎自定义 LaunchConfiguration-Extension 是一种可行的解决方案尝试。 我所做的是创建一个新的自定义 LaunchConfiguration-Extension,它 99.999% 构建在 JUnitLaunchConfiguration 之上。我只需要添加一个自定义

BlaBlaJUnitPluginTestLauncher extends launching.JUnitLaunchConfigurationDelegate

覆盖了

launch(ILaunchConfiguration, String, ILaunch, IProgressMonitor)

根据我们的需要调整应用参数的方法。

BlaBlaJUnitPluginTestTabGroup extends org.eclipse.pde.ui.launcher.JUnitTabGroup

为了能够使用默认参数初始化 LaunchConfig 对话框,我必须:

  1. 添加自定义BlaBlaPluginJUnitMainTab 扩展PluginJUnitMainTab
  2. 创建自定义 JUnitProgramBlock 实现 (BlaBlaJUnitProgramBlock)
  3. BlaBlaJUnitPluginTestTabGroup.BlaBlaPluginJUnitMainTab.createProgramBlock() 方法中创建BlaBlaJUnitProgramBlock 的实例
  4. BlaBlaJUnitProgramBlock 中覆盖setDefaults-方法(不确定是否真的有必要)
  5. 覆盖BlaBlaJUnitProgramBlock 中的initializeForm 方法并在那里调整参数。

导致以下结果:

【讨论】:

  • 我想我现在接受我自己的答案。仍然欢迎更好或更有效的想法。
【解决方案2】:

这个答案差强人意:

试试这个:

  1. 手动创建和配置一个“良好”的启动配置。

下次您要启动尚未具有良好启动配置的测试时:

  1. 选择文件并调用Run As > Run Configurations ...(即,不要选择JUnit Plug-in Test!)
  2. 在该对话框中选择相同类型的良好启动配置,然后...
  3. 然后点击New Launch Configuration(左上角)

现在新创建的配置应该从好的配置中“继承”配置的值。

事实是:

2018 年编辑:

自 Eclipse Photon 起,Java 调试器支持launch configuration prototypes。我刚刚提交了Bug 536728 以请求这也用于测试启动。随意加入(或贡献)该错误。

【讨论】:

  • 哇。这听起来像是一个很好的解决方法。明天早上我会试试的。如果可行,我认为这里有人+100。谢谢斯蒂芬。
  • 不幸的是它不适用于 Eclipse4.4。许多条目是从“良好”启动配置中复制的,但尤其是从“主”选项卡和“要运行的程序”部分复制的条目。事实上,它是硬连线的:if (requiresUIThread()) setApplication(ui.ide.workbench) 并且这可能是在使用给定的 LaunchConfiguration 初始化对话框时发生的情况。非常感谢,斯蒂芬。
  • 多年前,Eclipse 的调试团队致力于模板化启动配置,请参阅bugs.eclipse.org/41353。不幸的是,这个功能从未完成。我不确定我的解决方法中的部分工作是否是这项工作的遗留问题,但我真的很惊讶 4.4 版和 4.5 版(我尝试过)之间应该存在差异。
  • 我不得不承认,当我尝试这种方法时,我只是模糊地记得编辑中提到的 config-cloning 的两种变体,但实际上我的实验成功归功于一个事实,我对org.eclipse.ui 没有依赖关系,因此“无头”始终用作默认值,请参阅我的其他答案...
  • 我特此授予您 100 多件互联网金牌,以表彰您在评论和回答这个特定问题方面付出的巨大努力。尽管我现在将使用自定义 LaunchConfiguration 留下它,但我真的非常感谢您在我的问题中投入的时间和想法。
【解决方案3】:

如果你只是为了方便而寻找快捷方式,那么 Eclipse 会记住最后一次执行。使用运行方式并保存运行配置后,只需使用工具栏中的“运行方式”按钮即可。 除了这个 Eclipse 还为测试人员提供了风味,你可以检查一下。 另外,由于您正在谈论单元测试,请查看是否可以使用 ant build 甚至更好地转换为基于 maven 的项目。 Maven 集成了对测试的支持。

【讨论】:

  • 我们在工作区中有 556 个插件,大概有 4000 个 *Test.java 文件。其中很多是驻留在片段中的测试,该片段托管具有 swt-Dependency 的插件。这些测试不能开箱即用,因为 Eclipse 总是会选择“错误”的应用程序模式。
  • 感谢您的帮助。此外:测试在持续构建中运行良好。我们只是在任何开发人员机器上本地运行它们时遇到问题。
【解决方案4】:

似乎有一个简单而有效的启发式方法,它决定 JUnit 插件测试是应该无头运行还是与应用程序一起运行:

确保包含您的测试的插件不依赖任何org.eclipse.ui

  • 如果不为新创建的启动配置默认选择依赖[No Application - Headless Mode]
  • 使用该依赖项,默认值为 Run a product,带有 s.t.喜欢org.eclipse.platform.ide 预选。

【讨论】:

  • 没错!对“ui”相关捆绑包的依赖导致了选择无头的硬连线结论。在各种“ui”相关的包中,我们仍然希望以使用插件相关功能(资源、服务……)和无头模式的方式运行我们的 JUnit 测试。也许下次我会考虑将 UI-Code 与 Business-Code 更严格地分开,以避免这种混杂的方面。
猜你喜欢
  • 1970-01-01
  • 2015-03-17
  • 2012-03-23
  • 1970-01-01
  • 1970-01-01
  • 2016-02-17
  • 2010-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多