问题
我有一个做二进制求和的java类,我仍在试图弄清楚如何进行单元测试,但我不知道该怎么做。我用谷歌搜索过,我得到的最好的解释是来自维基百科的页面:http://en.wikipedia.org/wiki/Unit_testing
但是我仍然不确定如何对这个程序进行测试。该程序所做的基本上是2字节[]并添加它们并返回新的二进制数组。用Java编写。我该怎么测试呢?
#1 热门回答(111 赞)
- 使用正确的输入定义正常情况下的预期和期望输出。
- 现在,通过声明一个类来实现测试,将其命名为任何东西(通常类似于TestAddingModule),并将testAdd方法添加到它(例如下面的那个):编写一个方法,然后在其上面添加@Test注释。在该方法中,运行二进制和和assertEquals(expectedVal,calculatedVal)。通过运行方法测试你的方法(在Eclipse中,右键单击,选择Run as→JUnit test)。 //正常添加
@测试
public void testAdd1Plus1()
{
int x = 1; int y = 1;
assertEquals(2,myClass.add(x,y));
} - 根据需要添加其他案例。如果存在整数溢出,请测试二进制和不会引发意外异常。测试你的方法正常处理Null输入(下面的示例)。 //如果你使用0作为null的默认值,请确保你的类适用于该情况。
@测试
public void testAdd1Plus1()
{
int y = 1;
assertEquals(0,myClass.add(null,y));
}
#2 热门回答(57 赞)
要为你的项目进行单元测试,请按照以下步骤操作(我使用Eclipse编写此测试):
1-单击New - > Java Project。
2-记下项目名称,然后单击"完成"。
3-右键单击你的项目。然后,单击New - > Class。
4-记下你的课程名称,然后点击完成。
然后,完成这样的类:
public class Math {
int a, b;
Math(int a, int b) {
this.a = a;
this.b = b;
}
public int add() {
return a + b;
}
}
5-单击文件 - >新建 - > JUnit测试用例。
6-检查setUp()并单击完成。 SetUp()将是你初始化测试的地方。
7-单击"确定"。
8-在这里,我只添加7和10.所以,我希望答案是17.完成你的测试类如下:
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class MathTest {
Math math;
@Before
public void setUp() throws Exception {
math = new Math(7, 10);
}
@Test
public void testAdd() {
Assert.assertEquals(17, math.add());
}
}
9-在package explorer中单击你的测试类,然后单击Run as - > JUnit Test。
10-这是测试的结果。
我希望它有所帮助。
#3 热门回答(13 赞)
这是一个非常通用的问题,有很多方法可以解答。
如果要使用JUnit创建测试,则需要创建测试用例类,然后创建单独的测试方法,以测试测试中类/模块的特定功能(单个测试用例类通常与单个"生产"类相关联,正在测试)并且在这些方法中执行各种操作并将结果与正确的结果进行比较。尝试覆盖尽可能多的角落情况尤为重要。
在你的具体示例中,你可以测试以下内容:
- 两个正数之间的简单加法。添加它们,然后验证结果是否符合预期。
- 正数和负数之间的加法(返回带有第一个参数符号的结果)。
- 正数和负数之间的加法(返回带有第二个参数符号的结果)。
- 两个负数之间的加法。
- 导致溢出的添加。
要验证结果,可以使用org.junit.Assert类中的各种assertXXX方法(为方便起见,你可以执行'import static org.junit.Assert。*')。这些方法测试特定条件,如果它不验证(使用特定消息,可选),则测试失败。
你的案例中的示例测试用例类(未定义方法内容):
import static org.junit.Assert.*;
public class AdditionTests {
@Test
public void testSimpleAddition() { ... }
@Test
public void testPositiveNegativeAddition() { ... }
@Test
public void testNegativePositiveAddition() { ... }
@Test
public void testNegativeAddition() { ... }
@Test
public void testOverflow() { ... }
}
如果你不习惯编写单元测试,而是通过编写特殊测试来测试代码,然后"直观地"验证(例如,你编写一个简单的主方法,接受使用键盘输入的参数,然后打印出结果 - 然后你继续输入值并在结果正确的情况下验证自己),然后你可以从上面的格式编写这样的测试开始,并使用正确的assertXXX方法验证结果,而不是手动完成。这样,如果必须进行手动测试,则可以更轻松地重新运行测试。