我将在这里逆流而上,并建议为您的测试设置一个完全不同的项目。我相信通常情况下,将测试放在哪里并不重要,只要它是一致的并且在某种程度上易于管理。但是,对我来说,有三个令人信服的理由需要单独的测试项目:
关注点分离。首先,您的库有一个目的,而测试有另一个目的。虽然测试需要库才能运行,但库对测试没有真正的用途。请注意,我并不是说测试没有用,远非如此。这些测试用于验证库的健康状况,但在生产环境中,这些测试没有任何作用。
更少的膨胀,更小的文件。测试并不总是微不足道的。但即使他们都是,他们仍然会使用磁盘空间。由于无论如何测试都不会在生产环境中使用,因此这是没有意义的。此外,将测试分离到一个新项目中可以使文件结构更加清晰。
当测试不存在时,CI 环境通常更易于设置。
虽然至少有可能解决编译器指令的第二个问题,但是当将两者分开要容易得多时,这是不必要的工作。测试可能需要您使用相同命名空间(内部类的任何人?)的库或应用程序也不是问题,因为您的测试项目可能会镜像命名空间。显然,这使得在命名空间中没有名称冲突是必要的,但这是微不足道的。
在 Flash Builder 支持方面,将事物分成两个项目非常好。创建新测试所需要做的就是右键单击要测试的任何类,要求创建新测试并确保在弹出的对话框中选择测试项目而不是当前项目。这确实是我和我的团队成员在进入 TDD 时很难证明编写测试的主要原因,刚开始的开销太大。在 IDE 的当前状态下,它非常简单和有用。
然而,与任何技术一样,也有一些警告。一方面,除非记录在案,否则测试在不同的项目中并不明显。在同一个项目中进行测试可以有效地解决这个问题。另一方面,通过配置环境中可能拥有的 maven 或其他依赖项管理工具,可以轻松解决此问题。另一个问题是,如果您的测试项目中确实有一个包结构反映库或应用程序的包结构,那么在同步这些结构时会有一些维护开销。虽然不是一个大问题并且使用脚本很容易解决,但它仍然值得一提。
无论如何,我就是这样做的。