【问题标题】:Parameterized Groovy JUnit test-cases in EclipseEclipse 中的参数化 Groovy JUnit 测试用例
【发布时间】:2013-07-15 19:46:04
【问题描述】:

我在 Eclipse 中运行 Parameterized Groovy JUnit 测试用例时遇到问题(请参阅下面的测试代码和环境详细信息)。

症状

  • 右键单击包资源管理器中的类并执行 Run As -> JUnit Test Case 只会弹出一个对话框,声称“未找到 JUnit 测试”。
  • 右键单击项目并执行 Run As -> JUnit Test Case 运行所有测试用例除了参数化的 Groovy 测试用例。

我尝试过的事情

  1. 确保“正常”的 Groovy JUnit 测试用例运行。 这行得通。
  2. 确保参数化的 Java 测试用例运行。 这行得通。
  3. 为此测试用例手动创建 JUnit 运行配置。 这行得通。

所以

所以我有一个不方便的解决方法 (3)。但这不可扩展,因为当我在项目中运行所有测试用例时,仍然不会包含此测试用例。

有什么想法可以让 Eclipse/Groovy 插件/JUnit 自动识别我的测试用例吗?


测试用例代码
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.Parameterized
import org.junit.runners.Parameterized.Parameters

@RunWith(Parameterized)
public class TestParams {
    final int a

    public TestParams(int a) { this.a = a }

    @Parameters
    public static Collection<Object[]> data() {
        def cases = new Object[2][1]
        cases[0][0] = 3
        cases[1][0] = 4
        Arrays.asList(cases)
    }

    @Test public void test() { println "a = $a" }
}

环境

  • Eclipse Juno 服务版本 2 (OSX)
  • Groovy-Eclipse 2.8.0
  • JUnit 4.10.0

【问题讨论】:

  • 嗯...我正在使用 Groovy-Eclipse 2.8.0 和 2.1.5 编译器在 Kepler 中运行。这对我有用。您的错误日志中有任何错误吗?内容辅助/导航在您的课堂内是否有效?
  • @AndrewEisenberg:内容辅助似乎工作正常,并且没有报告错误(正如我所说,这在显式运行配置下运行良好)。我还没有探索开普勒(IDE 在我的 OSX 上立即崩溃)。然而,我对 Groovy-Eclipse 插件的总体经验(到目前为止)是它非常喜怒无常且容易出错,所以也许我在这里运气不好!

标签: eclipse groovy junit parameterized-tests groovy-eclipse


【解决方案1】:

此代码适用于我的 juno eclipse、junit 4.10 和 groovy 2.0.6。我从您的代码开始,但由于某些注释是红色的,因此不得不对导入进行胡乱处理。我还必须将 .class 添加到参数化中。

import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.Parameterized
import org.junit.runners.Parameterized.Parameters
@RunWith(Parameterized.class) public class TestParams {
    final int a

    public TestParams(int a) { this.a = a }

    @Parameters
    public static Collection<Object[]> data() {
        def cases = new Object[2][1]
        cases[0][0] = 3
        cases[1][0] = 4
        Arrays.asList(cases)
    }

    @Test public void test() { println "a = $a" }
}

【讨论】:

  • 不幸的是,这对我也不起作用,虽然我还没有尝试回滚到 Groovy-Eclipse 2.0.6(我明天会尝试......)所以如果你改变 @987654322 @返回Parameterized,它不再适合你了?
  • 哎呀,如果我删除 .class,它仍然有效。很抱歉造成混乱。
猜你喜欢
  • 2015-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
相关资源
最近更新 更多