我是单元测试的新手,因此想做一些实际练习来熟悉 jUnit 框架。
我创建了一个实现字符串乘法器的程序
public String multiply(String number1, String number2)
为了测试乘法器方法,我创建了一个测试套件,其中包含以下测试用例(具有所有需要的整数解析等)
public class MultiplierTest {
@Test
public void testMultiply() {
Multiplier multiplier = new Multiplier();
// Test for 2 positive integers
assertEquals("Result", 5, multiplier.multiply("5", "1"));
// Test for 1 positive integer and 0
assertEquals("Result", 0, multiplier.multiply("5", "0"));
// Test for 1 positive and 1 negative integer
assertEquals("Result", -1, multiplier.multiply("-1", "1"));
// Test for 2 negative integers
assertEquals("Result", 10, multiplier.multiply("-5", "-2"));
// Test for 1 positive integer and 1 non number
assertEquals("Result", , multiplier.multiply("x", "1"));
// Test for 1 positive integer and 1 empty field
assertEquals("Result", , multiplier.multiply("5", ""));
// Test for 2 empty fields
assertEquals("Result", , multiplier.multiply("", ""));
}
}
以类似的方式,我可以创建涉及边界情况(考虑数字是 int 值)甚至虚数值的测试用例。
1) 但是,上面最后 3 个测试用例的期望值应该是多少? (表示错误的特殊数字?)
2) 我错过了哪些额外的测试用例?
3) assertEquals() 方法是否足以测试乘法器方法,或者我是否需要其他方法,如 assertTrue()、assertFalse()、assertSame() 等
4) 这是开发测试用例的正确方法吗?我如何“确切地”从这个练习中受益?
5) 测试乘法器方法的理想方法应该是什么?
我在这里很无能。如果有人可以帮助回答这些问题,我将不胜感激。谢谢。
最佳答案
首先,你的代码是错误的,因为你有一个类但没有函数。我假设所有这些测试都在一个函数中?如果是这样,我会反对它。通常你想要一个测试来测试一件事:
public class MultiplierTests {
@Test
public void testSimpleMultiple() {
assertEquals(...);
}
...
}
其次,您在这里传递一个 int 作为结果:
assertEquals("Result", 5, multiplier.multiply("5", "1"));
但是 Multiplier.multiply()
返回一个 String
?
所以如何测试取决于结果。如果传入一个空字符串,它会抛出异常吗?如果是这样,您可以定义您的 @Test
注释以表明它希望抛出异常:
@Test(expected = IllegalArgumentException.class)
public void test() {
multiplier.multiply("", "5");
}
关于java - 正确定义 jUnit 测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2702870/