当前位置: 首页 > 知识库问答 >
问题:

如何阻止@unrolled Spock测试在Eclipse Junit视图中显示为“未根测试”?

糜俊彦
2023-03-14

一位同事最近在我们团队的项目中引入了Spock单元测试,我在其Eclipse集成方面遇到了一个恼人的问题:每当我们创建参数化测试并在其上使用@unroll注释时,Eclipse JUnit视图就会失去与测试类的关联,并在“unrot根测试”下显示结果。

例如,这个测试类的结果:

package test

import spock.lang.Specification
import spock.lang.Unroll

class TestSpockTest extends Specification {

    def "Not Unrolled Test"() {
        when: "something"
        then: "one equals one"
            1 == 1
    }

    @Unroll
    def "Unrolled Test #param"(Integer param) {
        when: "something"
        then: "a numer equals itself"
            param == param
        where:
            param << [1, 2, 3]
    }
}

以这种方式显示:

如何让展开的测试用例(例如“展开的测试1”)像“未展开的测试”一样显示在“test.testsocktest”下?对于我的Spock测试,是否有一些命名约定可以让Eclipse JUnit插件理解?

我在使用:

  • 月食开普勒SR1
  • spock-core-0.7-groovy-2.0
  • Jspresso Spock插件2.71
  • Groovy-Eclipse插件2.8
  • JUnit 4.8.2

共有1个答案

骆照
2023-03-14

这是一个众所周知的问题,因为Spock不能(通过其JUnit facade)预先告诉Eclipse将运行多少测试方法,以及它们的名称。(在数据驱动的测试中,这两个方面都是动态的。预先向Eclipse报告的内容与不使用@unroll时相同。当将此内容与测试运行期间报告的内容联系起来时,Eclipse会感到困惑。)

我在斯波克这边想不出解决这个问题的好办法。我考虑过一些方法,比如在Eclipse中运行时添加一些难看的启发式或执行两次测试,但没有一种方法令人信服。更理想的解决方案是改进Eclipse JUnit插件以更好地处理这种情况,这种情况也可能出现在许多其他JUnit兼容测试框架中。

如果您无法忍受当前的输出,以下是您可以采取的一些步骤:

  • 在Eclipse问题跟踪器中提交一个改进请求,并请Spock论坛上的每个人投票支持。
  • 不要使用@unroll。(它只影响报告,而不影响执行。选择它的一个原因是某些IDE与它有问题。)
  • 切换到IntelliJ IDEA,它提供了比Eclipse更好的Groovy、JUnit和Spock支持。
  • 责怪你的同事介绍斯波克。:-)
 类似资料:
  • 问题内容: 如何检测用户的Java视网膜显示?我已经知道可以使用来检测比例因子,但是java不允许我将返回的值转换为int。我想知道如何将其转换为int或另一种检测视网膜显示的方法。 问题答案: 我将以这种方式获得价值

  • 这是我的第一个Android应用程序,我试图使用admob广告为我的应用程序,但它是不工作,尽管我所做的一切。 这是我活动中与广告相关的代码 下面是我的XML代码 在模拟器上运行应用程序时的logcat读数既奇怪又令人困惑 如您所见,logcat中至少显示了3个错误。首先,google play服务已经导入到项目中。我可以在android私有库文件夹中看到它(但不是在libs文件夹中)。 还有一个

  • Rspec尝试在运行任何规范文件或整个测试套件的末尾运行测试::单元测试。它仍然可以,因为我没有任何测试单元测试文件,但它尝试将给定给rspec的命令行选项传递给test::unit,结果是 如何阻止rspec运行测试单元测试? 我正在使用的测试gem版本是

  • 在我的Espresso测试执行和AlertDialog会被提示并等待用户响应。Espresso测试只有在我按下“Accept”按钮但我想测试代替用户执行此事件时才会继续。 我注意到我的线程选项卡上有以下状态

  • 问题内容: 根据JUnit格式化的测试输出,我使用https://github.com/garcus/wct-xunit- reporter 创建了XUnit报告xml 。 Jenkins无法显示测试结果,这是行不通的。我试过了: 不同的XUnit测试结果(发布xUnit测试结果报告:[xUnit] [错误]-结果文件’.... / testfile.xml’的转换文件(在度量标准’NUnit’的

  • 我尝试在我的应用程序模块中的代码的AndroidKotlin应用程序的声纳Qube中显示测试覆盖范围。我可以生成雅各的覆盖结果并显示声纳Qube分度仪,但问题是测试覆盖范围未显示在声纳Qube中: https://imgur.com/a/xOjxLl1 在我的项目的build.gradle中,我有: 在我的身体里。我的应用程序模块的gradle 我生成我的Jacoco报告: 并使用:生成我的son