java - 组织期望异常的junit测试

标签 java unit-testing junit4

我有一个内部使用 2D 数组的类,并公开 processItem(int i,int j) 方法,如下所示。该方法使用从 1 开始的索引,并具有一个构造函数,该构造函数采用 int 值(例如 N)作为 2D 数组大小。因此,对于 N=10,i 和 j 的值应该是 1 到 N 。如果调用该方法时 i 或 j 小于 1 或大于 10 ,该方法将抛出 IndexOutOfBoundsException 。

在我的单元测试中,我想用 i,j 值调用该方法

(0,4),(11,3),(3,0),(3,11)

这些调用应该抛出 IndexOutOfBoundsException

如何组织测试,是否必须为每个 i,j 对编写 1 个单独的测试?或者有更好的方法来组织它们吗?

class MyTest{
  MyTestObj testobj;
  public MyTest(){
      testobj = new MyTestObj(10);
  }
  @Test(expected=IndexOutOfBoundsException.class)
  public void test1(){
      testobj.processItem(0,4);
  }

  @Test(expected=IndexOutOfBoundsException.class)
  public void test2(){
      testobj.processItem(11,3);
  }

  @Test(expected=IndexOutOfBoundsException.class)
  public void test3(){
      testobj.processItem(3,0);
  }

  @Test(expected=IndexOutOfBoundsException.class)
  public void test4(){
      testobj.processItem(3,11);
  }
..
}

最佳答案

如果它们完全独立,则编写独立的测试,但如果它们密切相关(看起来像这样),则只需对四个调用进行一次测试,每个调用都包含在 try-catch 和 fail('exception expected') 中。每次通话后。正如在junit 3中所做的那样。

关于java - 组织期望异常的junit测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18545971/

相关文章:

Angular 2 - 如何覆盖另一个模块中的依赖项以进行测试

c# - 如何将二维数组设置为单元测试的参数

Javascript:使用 Sinon 模拟构造函数

java - 使用 JUnit 进行继承

java - Vertx : java. sql.SQLSyntaxErrorException:用户缺乏权限或未找到对象:ACHAT

java - 在调试中保存对象,而不是在测试中将其用作 stub

java - 如何检查给定字符串的列表结果作为 HashMap 值

java - 不同版本的依赖支持 :design

java - 如何比较同一数组中的两个元素?

java - junit assume command - 我可以将它放在设置方法中以忽略所有测试吗