【问题标题】:Change display name of unit tests in JUnit Eclipse plugin在 JUnit Eclipse 插件中更改单元测试的显示名称
【发布时间】:2012-04-29 15:17:42
【问题描述】:

Eclipse 插件是否可以更改默认 Eclipse JUnit 插件运行的单元测试的显示名称?

一些背景知识:我正在尝试创建一个插件,它将显示单元测试名称(在 Eclipse 的 JUnit 视图中)与实际方法名称有点不同。如果实际的测试方法名称是“anEmptyCollectionHasSizeZero”,我希望它在 Eclipse JUnit 视图中显示为“空集合的大小为零”。

我已经设法以上述方式将测试方法名称显示为插件中的单独视图,但正如我所说,希望将此功能集成到正常的 JUnit 视图中。我试图查看是否可以找到相关的扩展点,但找不到任何东西。可以这样做吗?

另外,有没有一个插件已经这样做了,或者类似的?

【问题讨论】:

  • 有什么消息吗?我也很想要这样的功能。您当前的尝试(在单独的视图中)是否以任何格式发布?谢谢。
  • @Ittai:恐怕没有消息了。 storyteller.socosomi.com 上提供了一个非常早期的 Eclipse 插件版本。然而,它仍然非常原始。仍在开发中,还没有真正打算发布。但是,如果您愿意,请随时查看。 :-)
  • 我也对这个感兴趣:)
  • 我找到了这本关于 Eclipse 插件的书 informit.com/store/product.aspx?isbn=0321205758 。希望代码示例可以下载,首先看看circle-2源代码部分,他们实现了在测试运行中添加侦听器,特别是LabelProvider(见TestReportLabelProvider.java),也许你可以采取一些从中获得灵感。我的 2 美分 ;-)。
  • @Ittai, Alex:只是想告诉你,我谈到的 Eclipse 插件的公共版本已经发布。它仍然不会在单元测试运行时更改它们的显示名称,但它为您提供了一个单独的相关测试视图,该视图与您正在编写的代码并排显示相关测试。 storyteller.socosomi.com

标签: eclipse junit eclipse-plugin


【解决方案1】:

我不知道确切的答案,但最好的起点可能是查看org.eclipse.jdt.internal.junit.ui.TestRunnerViewPart 的代码(在插件org.eclipse.jdt.junit 中)。 ViewPart 是您在 Eclipse 中看到的 JUnit 视图。

看起来org.eclipse.jdt.internal.junit.model.TestCaseElement.getTestMethodName() 可能是获得名称的地方。也许您可以跟踪这些元素的创建方式/时间并注入其他名称。看起来实现类是内部的(org.eclipse.jdt.internal.junit.model.TestElement),所以你可能不走运。

我建议在JDT forums 上询问这样做的可能性。

【讨论】:

    【解决方案2】:

    似乎没有任何可插入的方式来更改标签或使用的颜色。

    (我曾希望用于TestViewer 的标签提供程序基于PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator(),因此可以装饰图像、标签和颜色,但似乎并非如此......)

    【讨论】:

    • 顺便说一句,如果你想改变这一点,请在 Bugzilla 上提交一个新错误:bugs.eclipse.org/bugs
    【解决方案3】:

    您可能想查看jnario 来源。他们已经实现了类似的东西,JUnit 窗口显示的东西肯定不是堆栈框架。

    【讨论】:

    • 我环顾四周。然而,它相当复杂,但看起来很有希望。如果运气不好,他们可能会这样做,因为他们实现了自己的文档类型(通过 XText)而不是使用 Java 文件,但我们拭目以待!
    【解决方案4】:

    您可以使用 junit.framework.TestCase 类的 setName() 方法(或带有 name 参数的构造函数)。

    public MyTestCase() {
        super("This is my JUnit test");
    

    默认情况下,TestCase 通过它的名称定义要执行的方法,我们刚刚覆盖了它。为了使其可运行,我们必须像这样覆盖 run 方法。

    @Override
    protected void runTest() throws Throwable {
        testMyTest();
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 2011-05-10
      • 2010-09-20
      • 2010-10-31
      • 1970-01-01
      • 2011-08-31
      • 2023-01-11
      • 1970-01-01
      • 2010-10-05
      相关资源
      最近更新 更多