Testng: TestNG 无法从 Spock 中找到 JUnit 方法名称

创建于 2014-04-01  ·  13评论  ·  资料来源: cbeust/testng

Spock 框架创建 JUnit 测试。 这些应该能够通过 TestNG 运行。 但是,在 org.testng.junit.JUnit4TestMethod 类中有以下代码:

    private static Method getMethod(Description desc) {
        Class<?> c = desc.getTestClass();
        String method = desc.getMethodName();
        try {
            return c.getMethod(method);
        } catch (Throwable t) {
            Utils.log("JUnit4TestMethod", 2,
                    "Method '" + method + "' not found in class '" + c.getName() + "': " + t.getMessage());
            return null;
        }
    }

由于传入的描述包含 Spock 测试的文本(例如:“这是我的 spock 测试”)并且 Spock 破坏了测试名称,因此简单的“c.getMethod(method)”调用失败。 如果这个问题得到解决,那么 TestNG 也应该能够运行 Spock (JUnit) 测试。

junit

最有用的评论

@rumatoest您可以利用空闲时间来调试/修复此@juherr所说,TestNG 是一个业余项目。

因为我已经想与 Spock 取得联系(总是渴望学习新东西),所以下次我可能会看看这个。

所有13条评论

我想知道为什么 TestNG 试图获得Method进行测试。 这会给很多实现 JUnit 运行器的测试框架带来麻烦。

+1

+1

+1

+1

+1

+1

这张票现在有 2 年以上的历史了。 它甚至还没有分配任何人(EVER)! 多么完整的笑话。 如果有人甚至在考虑使用 TestNG,您应该知道预期的支持极差。 我只希望我们所有的测试都在 JUnit 中......

我们在空闲时间支持 testng,并修复了其他最重要的问题。

但是项目是开放的,为什么不尝试自己修复呢? 我们很乐意帮助您提出拉取请求。

最后,正如您所说,JUnit 也是一个解决方案(也是一个很好的项目)。

@blackduck-joe 我看过这个问题,但我不知道如何解决它。

但是您的SO thead需要更清楚,如果我理解得很好,您想运行 2 种测试(spock/junit 和 testng)。
然后,如果您使用的是 maven,您应该查看https://groups.google.com/forum/#!topic/spockframework/ -iys4ARQrxk 和/或运行 TestNG 和 JUnit 测试

从概念上讲,将 junit 添加到我当前的项目中的必要性将导致我在下一个项目中只使用 junit。

@rumatoest您可以利用空闲时间来调试/修复此@juherr所说,TestNG 是一个业余项目。

因为我已经想与 Spock 取得联系(总是渴望学习新东西),所以下次我可能会看看这个。

此页面是否有帮助?
0 / 5 - 0 等级