• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

软件测试之Java标准单元测试库

发布: 2009-4-08 12:40 | 作者: 不详 | 来源: 测试时代采编 | 查看: 87次 | 进入软件测试论坛讨论

领测软件测试网

 import static org.junit.Assert.assertEquals;
  
  public class AdditionTest {
  
  private int x = 1;
  private int y = 1;
  
  @Test public void addition() {
  int z = x + y;
  assertEquals(2, z);
  }
  
  }
  
  这种方法使得测试受保护的方法非常容易,因为测试案例类现在可以扩展包含受保护方法的类了。
  
  SetUp 和 TearDown
  
  JUnit 3 测试运行程序(test runner)会在运行每个测试之前自动调用 setUp() 方法。该方法一般会初始化字段,打开日志记录,重置环境变量,等等。例如,下面是摘自 XOM 的 XSLTransformTest 中的 setUp() 方法:
  
  protected void setUp() {
  
  System.setErr(new PrintStream(new ByteArrayOutputStream()));
  
  inputDir = new File("data");
  inputDir = new File(inputDir, "xslt");
  inputDir = new File(inputDir, "input");
  
  }
  
  在 JUnit 4 中,您仍然可以在每个测试方法运行之前初始化字段和配置环境。然而,完成这些操作的方法不再需要叫做 setUp(),只要用 @Before 注释来指示即可,如下所示:
  
  @Before protected void initialize() {
  
  System.setErr(new PrintStream(new ByteArrayOutputStream()));
  
  inputDir = new File("data");
  inputDir = new File(inputDir, "xslt");
  inputDir = new File(inputDir, "input");
  
  }
  
  甚至可以用 @Before 来注释多个方法,这些方法都在每个测试之前运行:
  
  @Before protected void findTestDataDirectory() {
  inputDir = new File("data");
  inputDir = new File(inputDir, "xslt");
  inputDir = new File(inputDir, "input");
  }
  
  @Before protected void redirectStderr() {
  System.setErr(new PrintStream(new ByteArrayOutputStream()));
  }
  
  清除方法与此类似。在 JUnit 3 中,您使用 tearDown() 方法,该方法类似于我在 XOM 中为消耗大量内存的测试所使用的方法:
  
  protected void tearDown() {
  doc = null;
  System.gc();
  }
  
  对于 JUnit 4,我可以给它取一个更自然的名称,并用 @After 注释它:
  
  @After protected void disposeDocument() {
  doc = null;
  System.gc();
  }
  
  与 @Before 一样,也可以用 @After 来注释多个清除方法,这些方法都在每个测试之后运行。
  
  最后,您不再需要在超类中显式调用初始化和清除方法,只要它们不被覆盖即可,测试运行程序将根据需要自动为您调用这些方法。超类中的 @Before 方法在子类中的 @Before 方法之前被调用(这反映了构造函数调用的顺序)。@After 方法以反方向运行:子类中的方法在超类中的方法之前被调用。否则,多个 @Before 或 @After 方法的相对顺序就得不到保证。
  
  套件范围的初始化
  
  JUnit 4 也引入了一个 JUnit 3 中没有的新特性:类范围的 setUp() 和 tearDown() 方法。任何用 @BeforeClass 注释的方法都将在该类中的测试方法运行之前刚好运行一次,而任何用 @AfterClass 注释的方法都将在该类中的所有测试都运行之后刚好运行一次。
  
  例如,假设类中的每个测试都使用一个数据库连接、一个网络连接、一个非常大的数据结构,或者还有一些对于初始化和事情安排来说比较昂贵的其他资源。不要在每个测试之前都重新创建它,您可以创建它一次,并还原它一次。该方法将使得有些测试案例运行起来快得多。例如,当我测试调用第三方库的代码中的错误处理时,我通常喜欢在测试开始之前重定向 System.err,以便输出不被预期的错误消息打乱。然后我在测试结束后还原它,如下所示:
  
  // This class tests a lot of error conditions, which
  // Xalan annoyingly logs to System.err. This hides System.err
  // before each test and rest

文章来源于领测软件测试网 https://www.ltesting.net/

33/3<123

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网