gpt4 book ai didi

java - Eclipse 插件 + TDD?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:44:07 25 4
gpt4 key购买 nike

开发Eclipse插件时如何做TDD?自 PDE是一种 list 优先的方法,没有“测试范围依赖”之类的东西。

我应该另外做一个基于 maven 的项目吗?并直接在它的构建路径中添加插件项目? (因为插件项目不是基于 maven 的,所以它不会在 .m2 中)。这似乎不是一个很好的设置...

我在某处读到插件片段可以完成这项工作,但我必须手动添加 MockitoEasyMock到自定义存储库?或者将它包含在该片段内的类路径中?这似乎不太便携。

我正在习惯 Bndtools , 但它适合 eclipse 插件吗?

此外,我通常使用 InfinitestMoreUnits ,我想如果测试位于第二个项目中,后者将不起作用?

最后,我刚刚读到 Eclipse Tycho ,这是一组maven插件构建 eclipse 插件,它是否是一个合适的选择,即使它在孵化器中?

最佳答案

多年来,我们已经在多个项目中使用测试片段,发现它是最实用的方法。

因为该片段与其宿主包共享相同的类加载器,所以您的测试可以访问内部包和包私有(private)方法,就像没有 OSGi 容器一样。

片段甚至可以有一个 fragment.xml,如果需要,您可以在其中贡献扩展以进行测试。

测试驱动插件开发中最烦人的部分是PDE 测试 本身。一旦被测代码需要运行工作台,测试执行速度就会急剧下降。 PDE 测试启动 Eclipse 工作台以在其中执行测试。

因此,我们努力尽可能地将我们的代码与工作台代码隔离开来。这允许我们尽可能编写“快速”的普通 JUnit 测试,并且仅在绝对必要时才求助于 PDE 测试。两种测试可能存在于同一片段中,并通过鬃毛模式加以区分。

需要通过目标平台 提供测试依赖项(JUnit、Mock 库、匹配器库等)(以及其他非测试依赖项)。虽然混合这些依赖项可能看起来很奇怪,但我们在实践中没有遇到任何问题。

MoreUnit 非常适合此设置。它可以配置(每个项目)以在特定源文件夹中查找测试/生产代码类,即使它们位于不同的项目中也是如此。

Infinitest 可能不太适合执行 PDE 测试,只是因为它们的执行速度较慢,而 Infinitests 是经常执行快速测试。但是,如果可以排除 PDE 测试,您仍然可以将其用于普通 JUnit 测试。

例如Eclipse Extras项目应用了所描述的技术 - 如果您有兴趣,可以探索资源以了解它们在实践中的工作原理。

如果您从头开始,Bndtools 当然值得考虑。我听说 Bndtools 开发人员使用 Bndtools 来构建 Bndtools。 AFAIK Bndtools 不支持编辑插件 Artifact ,例如 plugin.xml。但也许您可以使用 PDE 插件编辑器和 Bndtools 来编辑扩展和扩展点。

在典型的 Bndtools 项目中,您的生产代码和测试代码位于同一项目内的不同源文件夹中,这与 Maven 项目非常相似。但是,test 源文件夹未包含在生成的包中。

在同一个项目中拥有生产和测试代码的缺点是测试依赖项从生产代码中可见。这是因为两个源文件夹共享相同的类路径容器。

Tycho 尽管它处于孵化器状态,​​但它是测试和构建各种 Eclipse Artifact (如插件、功能、目标平台和产品)的好工具。与上述设置一起,我们在 CI 服务器上使用 Tycho 来构建、运行测试最后为我们的插件项目打包 p2 存储库。

关于该主题的更多资源:

关于java - Eclipse 插件 + TDD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29688801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com