追求代码质量: 使用 TestNG-Abbot 实现自动化 GUI 测试[2] 软件测试
Word Finder GUI
为了使您了解 TestNG-Abbot 工作原理,我创建了一个简单的 GUI,它执行一种功能 —— 在底层字典(也就是一个数据库)中查阅一个给定的单词并显示其释义。不管该应用程序实际的代码如何,测试该 GUI 用户场景包括三个步骤:
在文本框中输入一个单词。
单击 Find Word 按钮。
验证是否给出了该单词释义。
当然,也存在一些极端的例子,比如一个用户按下了 Find Word 按钮但没有输入单词,或者,用户输入了一个无效的单词。我将通过一些其他的测试案例说明如何处理这类场景。
了解 GUI
图 1 显示了已启动的 Word Finder GUI。记住该 GUI 之所以简单只有一个原因:它演示了 TestNG-Abbot 的三个 fixture 类以及一些要引导的测试用例!
图 1. Word Finder GUI
当使用 TestNG-Abbot 进行测试时,应该首先检查 GUI 的组件。Word Finder GUI 由图 2 所示的三个组件组成:
图 2. Word Finder GUI 的组件
如您所见,Word Finder GUI 由一个 JTextField(用来输入要查询的单词)、一个 JButton(使 GUI 从字典数据库中获取释义)和一个 JEditorPane (显示释义)组成。
在良好的场景中,如果我输入 pugnacious 然后单击 Find Word 按钮,JEditorPane 将显示 “Combative in nature; belligerent”,如图 3 所示:
图 3. 良好的场景 —— 工作良好!
使用 TestNG-Abbot 进行测试
要开始使用 TestNG-Abbot,需要创建一个常规的测试 fixture,它将使用 TestNG 的 BeforeMethod 和 AfterMethod 注释为您的 GUI 创建一个实例。TestNG-Abbot 框架附带了一个方便的 AbbotFixture 对象,它简化了 GUI 组件的使用,实际上也引导了整个测试过程。要在测试 fixture 中使用该对象,需要在测试前将一个 GUI 实例传递给 fixture 对象的 showWindow() 方法,然后使用名为 cleanUp() 的方法对 fixture 进行清理。