- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
开发Eclipse插件时如何做TDD?自 PDE是一种 list 优先的方法,没有“测试范围依赖”之类的东西。
我应该另外做一个基于 maven 的项目吗?并直接在它的构建路径中添加插件项目? (因为插件项目不是基于 maven 的,所以它不会在 .m2 中)。这似乎不是一个很好的设置...
我在某处读到插件片段可以完成这项工作,但我必须手动添加 Mockito或 EasyMock到自定义存储库?或者将它包含在该片段内的类路径中?这似乎不太便携。
我正在习惯 Bndtools , 但它适合 eclipse 插件吗?
此外,我通常使用 Infinitest和 MoreUnits ,我想如果测试位于第二个项目中,后者将不起作用?
最后,我刚刚读到 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/
我在互联网上搜索了很多小时,但没有找到满意的结果,所以 -VSTO Addin 和 COM Addin(我们作为类库项目制作并使用 Excel 对象)之间有什么区别?VSTO 项目是否有任何限制,例如
我在互联网上搜索了很多小时,但没有找到满意的结果,所以 -VSTO Addin 和 COM Addin(我们作为类库项目制作并使用 Excel 对象)之间有什么区别?VSTO 项目是否有任何限制,例如
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我正在寻找有关如何构建可扩展 WCF 服务器(具有动态加载的服务)的建议,最好使用 System.Addins 或 MEF。 服务器应托管实现最小“插件”API(StartService/StopSe
有没有一种方法可以使用加载浏览器扩展/插件/插件的 headless 浏览器(即 PhantomJS、Selenium)来运行自动测试? 更具体地说,我想模拟广告拦截器(如 Ghostery、ad-b
我是 gradle 的新手,我使用 artifactory 作为我的 repo 服务器。我在网上查看了如何将我的项目发布到我的 repo 服务器,发现我可以使用 maven-publish 或使用 a
我想禁用某些状态的点击/事件,并仅使少数状态可点击。我通读了http://newsignature.github.io/us-map/处的文档,并且找不到与此问题相关的任何内容。 最佳答案 http:
据我了解,在Intellij中使用idea插件打开Maven构建的项目并不是最好的方法,即调用: mvn idea:idea 但是直接打开pom文件(Intellij有默认的Maven插件);同样的事
使用Artifactory plugin对于 Jenkins pipeline 来说是一种幸福,只要遵循文档就可以了。但后来我介绍了Maven Flatten plugin解析父模块和子模块 mvn
我已经安装了Elasticsearch版本1.7.1。一切正常。我也安装了 JDBC 驱动程序。检查下面我的插件文件夹 目录E:\Xampp\htdocs\my-elastic\elasticsear
在我使用 webpack common chunks 插件创建包含第三方库(如 angular、react、lodash 等)的 vendor 包之前,但后来我知道了 webpack dll
我们正在尝试使用(Jenkins、sonar、eclipse ...)安装 CI 平台。 为了让每个开发人员都可以在提交之前对他的代码进行分析,我想知道两种选择: 使用 Sonar 插件运行本地分析。
我知道这是一个比较特殊的问题。尽管如此,也许有些人知道这一点: 我想在 Eclipse 中使用 Maven 编译 Hector=> 分支:0.7.0 和标签:hector-0.7.0-29(https
我卡住了。我一直在尝试寻找或自己创建一个简单的准系统示例,说明如何为 VS 2010 Express 创建 Outlook 插件。我知道这在 VS 2010 Pro 中更简单,但是,在快速版本中真的不
我有以下排除过滤器来忽略所有 R 文件类: findbugs-exclude-filter.xml 当我将它用于 FindBugs-IDEA 插件时,它可以
我刚开始玩 CakePHP,我发现了 Wildflower CMS .我喜欢这个想法,并打算开始修补它。不过,我有一个问题。 在自述文件中,我发现了以下内容:“Wildflower 不是也不会是 Ca
虽然现在大部分情况都是使用n-api来编写插件,但是底层毕竟是v8(和libuv),使用v8编写简单的插件,同时熟悉v8的使用。 本文介绍在写c++插件时,简单又常用的写法,其实本质上,写插件
本篇是 Python 系列教程第 3 篇,更多内容敬请访问我的 Python 合集 Visual Studio Code的安装非常简单,就不放这里增加文章篇幅了。 相比PyCharm,V
Maven – 插件 什么是 Maven 插件? Maven 实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成。Maven 插件通常被用来: 创建 jar 文件 创建 war
我正在编写一个插件来添加带有标签 [deposit_page] 的页面;该标记应替换为一些 PHP 代码。 这就是我所拥有的,但它不起作用。有什么我遗漏或做错了什么吗? function deposi
我是一名优秀的程序员,十分优秀!