【问题标题】:Junit- how to test invalid usage of parametersJunit-如何测试参数的无效使用
【发布时间】:2014-09-30 09:07:35
【问题描述】:

我应该为正确参数的无效使用编写一个 Junit 测试。我对这个概念有点困惑。有人可以帮忙解释一下这种情况是什么,以及如何举例说明吗?

我正在测试一种将客户和服务类型作为参数的方法。我已经尝试了下面的assertFalse 方法,并尝试将两个客户传递给

assertFalse("Registration fails for add two services to one customer", cs.addPeople("Jack", "Jill","Cleaning"));

我意识到这不是正确的方法,因为add.People()方法只接受一个人作为参数。在这种情况下,我们如何测试无效使用?非常感谢!

【问题讨论】:

  • 我真的不知道我是否正确理解了这个问题。对我来说,这听起来有点像逻辑问题。就像你的函数可能有一个对象和一个服务一样,虽然拥有“house”和“clean”是有效的,但拥有“person”和“clean”是无效的。或许您可以多谈谈无效用法?
  • 目标(根据要求)是测试用户对参数进行无效使用时会发生什么,我不知道如何测试它..我的意思是如果使用参数不正确,方法根本不会执行,对吧?
  • 如果参数的类型不正确,方法会执行。但当然它可能是这样的(糟糕的编程只是为了做例子):方法得到一个字符串,应该对“A”、“B”和“C”做出反应,所以其他一切都是无效的用法。但为此,我们实际上需要查看您必须测试的功能。
  • 我假设它在谈论有效参数的状态。即传入正确的参数说一个名为 Jack 的人,但只有当他们的名字是 Bob 或者他们可以执行服务等时才能添加一个人。否则他们是无效的。
  • @cID:在这种情况下,我希望测试某种无效使用异常(与 isah 的答案相同)。尽管如此,我们还是需要知道该方法的预期行为来对其进行测试。

标签: java testing methods junit parameters


【解决方案1】:

通过测试参数的无效使用,我猜你的意思是用无效参数编写场景。 例如。 假设你有一个方法:

public Integer toInteger(String input){
   //conversion logic
}

现在,您可能想知道您的方法在不同场景中的表现。 一种情况是传递无效参数,例如 null,然后查看您的方法的行为。

@Test
public void testToIntegerForNullParam(){
   myClass.toInteger(null);
}

如果你没有处理null检查,这个方法是不会通过的,你必须重构才能通过这个测试。

public Integer toInteger(String input){
   if(input == null){
      throw new IllegalArgumentException("Argument was null!"); 
    }
    //conversion logic
}

然后在您的测试中,您可以测试当参数为空时这是否确实引发异常。你可以使用expected = IllegalArgumentException.class

@Test(expected = IllegalArgumentException.class)
public void testToIntegerForNullParam(){
    myClass.toInteger(null);
}

您可以继续添加更多场景,例如字符串不是数字等。

【讨论】:

  • 谢谢,但我们不使用 assert(...) 之类的方法吗?我不太明白你的代码。
  • 在上面的例子中,我没有使用断言,因为我没有断言什么。我只是希望它会引发异常。
  • 它说正确参数的使用无效。 null 是一个正确的参数吗?
  • @clD 问题没有得到正确解释。但我的假设是针对“无效参数”进行测试,因为这通常是这种情况。
  • @user4056620 我添加了一些解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多