代码之家  ›  专栏  ›  技术社区  ›  Mims H. Wright

关于如何在库中包含单元测试的最佳实践

  •  2
  • Mims H. Wright  · 技术社区  · 15 年前

    我正在为ActionScript3.0开发一个名为 as3lib 它包括对核心API的几个扩展和一些有用的函数。我已经编写了几个单元测试(使用FlexUnit)来确保一切正常工作。

    目前,我所有的代码都在 src/ 还有我的考试 test/ 但是我已经建立了一个二级Flex项目来运行单元测试。当我想要运行测试时,我还手动添加测试文件并从库中删除测试文件。

    4 回复  |  直到 15 年前
        1
  •  2
  •   cwallenpoole    15 年前

    我们在我的公司做这些事情的方式是,我们实际上在源目录下包含这两个文件,然后我们使用两个应用程序mxml文件。一个是测试套件,它包括到单元测试类的所有适当链接,另一个是主应用程序。src文件夹中还有两个包结构:一个包结构com..,另一个包结构tests.com。。。确保 全部的 总是 在测试包中——通过这种方式,您只能使用一个SVN ignore,还可以确保您的测试不会创建与其他项目的依赖关系和硬编码关系。

    我们使用两种方法来确保不包括test.com源文件。自动生成系统仅引用主应用程序,并且由于仅从com导入,因此mxmlc.exe将仅包含主应用程序的文件。在eclipse内部本地构建时,您可以通过单击Debug旁边的小箭头并滚动到“Organize favorites”来控制构建方式。单击“Add”时,您应该能够选择引用应用程序类的所有根级别.mxml文件。确保添加基本应用程序和新的单元测试应用程序文件。然后单击“确定”时,箭头现在允许您作为主应用程序或单元测试框架进行调试。

        2
  •  1
  •   RJ Owen    15 年前

    我的做法与你过去描述的类似,但似乎是 SpringAS 在配置中动态添加和删除它们可能非常方便。你试过调查那件事吗?

        3
  •  1
  •   Andrew Aylett    15 年前

    我们在库的顶层有单独的src和tests目录。我们的应用程序是围绕库项目的非常薄的包装,所以它们不需要任何测试。我们还有一个FlexUnit应用程序项目,用于运行FlexBuilder的测试。

    我们的主构建系统使用maven,Sonatype Flex插件在构建过程中运行所有单元测试,甚至在基于linux的Continuum服务器上也是如此。Maven默认在“tests”目录中查找测试,这是选择该位置的一个很好的理由。

        4
  •  1
  •   Marcus Stade Quentin    14 年前

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

    1. 关注点分离。首先,您的库有一个目的,测试有另一个目的。虽然测试需要库来运行,但库对测试没有实际用途。 我并不是说测试是无用的,远非如此。这些测试用于验证库的运行状况,但在生产环境中,这些测试没有任何用途。

    2. 在没有测试的情况下,CI环境的设置通常比较干净。

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

    不管怎样,我就是这样做的。

    推荐文章