14. 编写和运行GDA测试代码

本文档包含有关如何编写单元测试和集成测试的指导。

如果您的新测试类/用例已经存在,请按照与要测试的类相同的包结构将其添加到其测试片段项目中。

如果测试分片还不存在,请新建测试分片项目,选择包含待测试类的插件作为Host,在org.juit4和uk.ac.gda.test.helpers中添加插件依赖项,然后在与待测试类相同的包结构中创建新的测试类。

测试片段项目必须并且只能测试其宿主插件中的代码。

如果您想创建一个依赖于比宿主插件更多的插件的测试,那么将测试放在测试插件中,而不是放在片段中。

一个测试片段项目应该只依赖于org.juit4、uk.ac.gda.test.helpers和任何第三方库或插件,而不能依赖于任何其他GDA插件项目。

请不要在未经仔细考虑的情况下将内容放入uk.ac.gda.test.helpers插件。我们的目标应该是通过将助手实用程序分解成小块来使其尽可能小,以证明它们存在于此插件中,并确定每个最好的块所属的真实测试片段。

GDA使用JUNIT4和mockito开发测试用例。Martin Fowler的一篇文章Mock Are Not Stubs对经典的JUNIT和Mock Objects的测试方法进行了很好的比较,这是一本很好的读物。

每个插件中“test”文件夹中的所有测试用例都将移动到原始插件名称后附加“.test”的片段项目的“src”文件夹中。原始插件被设置为此片段项目的宿主插件,以便测试类可以访问要测试的类中的所有方法。

每个插件的“testfiles”文件夹中的所有测试数据也分别随测试类一起移动到它们的测试片段中。

由多个测试片段共享的测试类(如助手和实用程序类)位于插件“uk.ac.gda.test.helpers”中,因此各个片段都可以依赖它。导出“uk.ac.gda.test.helpers”中的所有内容。“uk.ac.gda.test.helpers”目前依赖于core、common、nexus、libs、common.client、swingclient以及其他第三方软件。

为了在Eclipse IDE中使用scisoftpy开发和运行jython单元测试用例,您必须正确设置项目和/或目标平台的PYTHONPATH,以便您测试的脚本可以访问那里提供的库:

  1. 将您的目标平台tp启用为PyDev项目。

  2. 在Eclipse IDE中运行您的jython单元测试用例。

  3. 如果你得到一个找不到类的错误,找出丢失的类在哪里,并通过上下文相关的“属性”菜单将它的路径添加到它的包含插件的PYTHONPATH中。

或者,您可以不使用tp,而将uk.ac.Diamond.scisoft.python插件的PYTHONPATH中的变量${tpp_loc}修改为指向当前活动的目标平台。因为它是PyDev,所以您必须使用目标平台插件的绝对路径,这意味着如果您将项目签出到不同的位置,您将不得不更改它。