2014-09-30 80 views
1

我应该为正确参数的无效使用编写一个Junit测试。我对这个概念有点困惑。有人可以帮助解释这种情况是什么,以及如何用一个例子来做到这一点?Junit-如何测试参数的无效使用

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

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

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

+0

我真的不知道,如果我理解正确的问题。对我来说,这听起来有点像逻辑问题。像你的功能可以有一个对象和一个服务,虽然有“家”和“干净”是有效的,但“有人”和“干净”无效。也许你可以更多地了解这种无效使用情况? – Feroc 2014-09-30 09:11:13

+0

目标(根据要求)是测试当用户执行参数的无效使用时会发生什么,我不知道如何测试它..我的意思是如果参数的使用不正确,方法wouldn根本不执行,对吧? – stillAFanOfTheSimpsons 2014-09-30 09:30:52

+1

如果参数的类型不正确,该方法将执行。当然,它可能是类似的(编写这个例子的时候编程不好):方法获得一个字符串,并且应该对“A”,“B”和“C”作出反应,所以其他一切都是无效的。但为此,我们实际上需要查看您必须测试的功能。 – Feroc 2014-09-30 10:01:57

回答

2

通过测试参数的无效使用情况,我想你的意思是写入无效参数的情况。例如, 。 说你有一个方法:现在

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 
} 

然后在测试中,您可以测试当参数为null时是否确实会抛出异常。您可以使用expected = IllegalArgumentException.class

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

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

+0

谢谢,但我们不使用像assert(...)这样的方法吗?我没有完全得到你的代码。 – stillAFanOfTheSimpsons 2014-09-30 10:01:34

+0

在上面的例子中,我没有使用断言,因为我没有断言。我只是期待它抛出一个异常。 – isah 2014-09-30 10:46:15

+0

它说非正确参数的使用。 null是否是一个正确的参数? – clD 2014-09-30 10:50:04