2011-05-15 167 views
0

Chris写了一个名为toBinary的函数,它具有一个整数输入参数并返回一个表示二进制等效的字符串。例如,如果使用整数3调用该函数,则返回的字符串应该是'11'。Java JUnit测试

可能使用“given”,“when”和“then”序列及其等效的JUnit代码编写测试规范的英文序列。

我的回答是:

测试应涵盖正常情况下,极端的情况下,和错误的案件。给定例3的一个整数,它应该在方法执行后将其转换为11。

@Test 
public void testToBinary() { 
Binary aBinary = new Binary(); 
assertEquals(3, 11); 
assertEquals(2, 10); 
assertFail(10, 8575); 
} 

这是正确的吗?

+0

当你说'toBinary'“有一个整数的输入参数”,你的意思是它需要一个'int'还是一个'Integer'?没有我知道的“整数”。如果它需要一个'Integer',空字符是否有明确定义的行为?如果是这样,它是否会抛出NPE?如果是这样,你能否断言NPE被抛出? – Ray 2011-05-16 12:44:32

+0

我还会为'Integer.MAX_VALUE' /'Integer.MIN_VALUE' – Ray 2011-05-16 12:45:13

回答

1

您可以零和负数添加测试用例..

5

在你的代码示例中,当你写“的assertEquals(3,11);”你断言3等于11(基数为10),这总是假的。

你不需要像

assertEquals("11", toBinary(3)); 

哪些测试你的函数,给出三个输入,返回字符串“11”。

6

那些声称没有任何意义 - 当然,3 = 11,您将需要转换方法适用于输入和验证输出预计:

assertEquals("11", aBinary.someConvertMethod(3)); 

预期值!必须是第一个参数,而实际值是第二个参数。

此外,assertFail不是一个真正的方法。有assertNotEquals,这可能是你在找什么。

0

首先,每个单元测试应该有大多数一个断言。正如其他人说你必须调用构造函数或哪种方法你是在实际的测试情况下依靠:
assertEquals("11",toBinary(3);