我正在开发一个名为 ActionScript 3.0 的通用代码库 as3lib 其中包括核心 API 的多个扩展和一些有用的功能。我已经编写了几个单元测试(使用 FlexUnit)以确保一切正常工作。

在库中组织这些测试的最佳方式是什么? 目前,我的所有代码都在 src/ 和我的测试 test/ 但我已经设置了一个辅助 Flex 项目来运行单元测试。当我想运行测试时,我还手动从库中添加和删除测试文件。

我正在做的事情似乎不对。有没有更好的办法?最好是编译的库不包含测试文件,但我不需要两个单独的项目来测试它们。

有帮助吗?

解决方案

我们已经在我的公司做这些事情的方式是,我们实际上包括源目录下的两个,然后我们有我们使用了两个应用程序MXML文件。一个是测试套件,它包括了所有适当的链接到单元测试类,另一种是主应用程序。我们也有src文件夹的内的两个封装结构:一个封装结构COM ..和另一tests.com ......确保的所有的单元测试的源代码是始终的在测试包 - 这种方式,您可以只用一个SVN忽略,你也可以确保你的测试不会产生与其他项目相关的和硬编码的关系

有我们用它来确保不包括在test.com源文件两种方式。自动化构建系统只引用的主要应用,并由于从融为一体,只有进口,mxmlc.exe将只包括主应用程序的文件。当本地建设,Eclipse中,你可以控制的东西建立通过点击小如何在下一个箭头,调试和滚动到“整理收藏夹”。当您单击“添加”,你应该能够选择哪些引用应用程序类的所有根级别的.mxml文件。一定要加基本应用程序和新的单元测试的应用程序文件。当你再点击“确定”,现在的箭头可以让你调试无论是作为主要的应用程序,或者你的单元测试框架。

顺便说一句,我们还可以使用的FlexUnit作为我们的测试框架。我喜欢它。

其他提示

我已经按照你过去描述的方式做了类似的事情,但这似乎是这样的事情 SpringAS 对于动态添加和从配置中删除它们来说非常方便。你尝试过调查一下吗?

我们必须在我们的图书馆顶级独立src和测试目录。我们的应用都是围绕库项目非常薄的包装,所以他们不需要任何测试。我们也有一个FlexUnit应用程序项目,从弹性生成运行测试。

我们使用Maven为我们的主要构建系统和Flex的Sonatype的插件运行构建过程中所有的单元测试,甚至我们的基于linux的连续的服务器上。行家默认为在“测试”目录,这是用于拾取该位置的好理由寻找测试。

我将反其道而行之,并建议为您的测试完全建立一个不同的项目。我相信,一般来说,将测试放在哪里并不重要,只要它是一致的并且在某种程度上是可管理的。然而,对我来说,建立一个单独的测试项目有三个令人信服的理由:

  1. 关注点分离。首先,你的库有一个目的,测试有另一个目的。虽然测试需要该库才能运行,但该库对测试没有真正的用途。 笔记 我并不是说测试毫无用处,远非如此。这些测试是为了验证库的运行状况,但在生产环境中这些测试没有任何作用。

  2. 更少的膨胀,更小的文件。测试并不总是微不足道的。但即使它们全部都是,它们仍然会使用磁盘空间。由于测试无论如何都不会在生产环境中使用,因此这是毫无意义的。此外,将测试分离到一个新项目中可以使文件结构更加清晰。

  3. 当没有测试时,CI 环境通常更容易设置。

虽然肯定至少可以使用编译器指令解决第二个问题,但当将两者分开要容易得多时,这是不必要的工作。测试可能需要您使用相同名称空间(内部类?)的库或应用程序也不是问题,因为您的测试项目可能会镜像名称空间。显然,这使得命名空间中不能出现名称冲突,但这很简单。

就 Flash Builder 支持而言,将事物分成两个项目非常棒。创建新测试所需要做的就是右键单击您想要测试的任何类,要求创建新测试并确保选择您的测试项目而不是弹出对话框中的当前项目。这确实是我和我的团队成员在进入 TDD 时很难证明编写测试的主要原因,因为刚开始就需要太多的开销。就 IDE 的当前状态而言,它非常简单且有用。

然而,与任何技术一样,也有一些警告。一方面,除非有记录,否则测试是否在不同的项目中并不明显。在同一个项目中进行测试可以有效地解决这个问题。另一方面,通过配置 Maven 或环境中可能拥有的其他依赖管理工具可以轻松解决此问题。另一个问题是,如果您的测试项目中确实有一个镜像库或应用程序的包结构,则同步这些结构会产生一些维护开销。虽然不是一个大问题并且很容易使用脚本解决,但它仍然值得一提。

无论如何,我就是这么做的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top