追求代码质量: 使用 TestNG-Abbot 实现自动化 GUI 测试[4]

发表于:2010-05-04来源:作者:点击数: 标签:代码质量自动化GUIgui
追求代码 质量 : 使用 TestNG-Abbot 实现自动化 GUI 测试[4] 软件测试 测试意外场景 当然,如果我非常希望验证我的 Word Finder GUI,我必须确保在用户执行意外操作时 —— 程序能够正常工作,比如在输入单词之前按下 Find Word 按钮,或者情况更糟,比如他

  追求代码质量: 使用 TestNG-Abbot 实现自动化 GUI 测试[4]   软件测试

  测试意外场景

  当然,如果我非常希望验证我的 Word Finder GUI,我必须确保在用户执行意外操作时 —— 程序能够正常工作,比如在输入单词之前按下 Find Word 按钮,或者情况更糟,比如他们输入了一个无效的单词。举例来说,如果用户没有向文本字段输入内容,GUI 应该显示特定的信息,如清单 4 所示:

  图 4. 糟糕的极端例子

  当然,使用 TestNG-Abbot 测试这种情况非常简单,不是吗?我所做的仅仅是将空值传送到 TextComponentFixture 中,按下按钮(通过对 ButtonFixture 使用 click 方法)并插入 “Please enter a valid word” 响应!

  清单 4. 测试一个极端例子:如果有人没有输入单词就按下了按钮该怎么办?

  @Test

  public void assertNoWordPresentInvalidText() {

  TextComponentFixture text1 = new TextComponentFixture(this.fixture,

  "wordValue");

  text1.enterText("");

  ButtonFixture bfix = new ButtonFixture(this.fixture, "findWord");

  bfix.click();

  LabelFixture fix = new LabelFixture(this.fixture, "definition");

  fix.shouldHaveThisText("Please enter a valid word");

  }

  如清单 4 所示,一旦理解了获得所需 GUI 组件的引用时,事情并不是很困难。最后一步是检验其他 糟糕的极端例子 —— 输入了无效的单词。这个过程与 清单 1 和 清单 3 非常相似:仅仅是将所需的 String 传递到 TextComponentFixture 对象,单击,然后插入特定的文本。如清单 5 所示:

  清单 5. 轻松验证另一个极端例子!

  @Test

  public void assertNoWordPresentInvalidText() {

  TextComponentFixture text1 = new TextComponentFixture(this.fixture,

  "wordValue");

  text1.enterText("Ha77");

  ButtonFixture bfix = new ButtonFixture(this.fixture, "findWord");

原文转自:http://www.ltesting.net