Java 如何编写单元测试?
我有一个Java类。我该怎么做Java 如何编写单元测试?,java,unit-testing,Java,Unit Testing,我有一个Java类。我该怎么做 在我的例子中,我让类做一个二进制和。它接受两个字节[]数组,对它们求和,然后返回一个新的二进制数组 使用正确的输入定义正常情况下的预期和期望输出 现在,通过声明一个类来实现测试,将其命名为任何名称(通常类似于TestAddingModule),并向其添加TestAddd方法(如下面的方法): 编写一个方法,并在上面添加@Test注释 在方法中,运行二进制和assertEquals(expectedVal,calculatedVal) 通过运行方法来测试您的方法
在我的例子中,我让类做一个二进制和。它接受两个
字节[]
数组,对它们求和,然后返回一个新的二进制数组
- 编写一个方法,并在上面添加@Test注释
- 在方法中,运行二进制和
assertEquals(expectedVal,calculatedVal)
- 通过运行方法来测试您的方法(在Eclipse中,右键单击,选择RunAs)→ JUnit测试)
- 测试如果存在整数溢出,二进制和不会引发意外异常
- 测试您的方法是否优雅地处理空输入(下面的示例)
这是一个非常普通的问题,有很多方法可以回答 如果您想使用JUnit来创建测试,您需要创建testcase类,然后创建单独的测试方法来测试被测试的类/模块的特定功能(单个testcase类通常与正在测试的单个“生产”类相关联)在这些方法中执行各种操作,并将结果与正确的结果进行比较。尝试覆盖尽可能多的角落案例尤其重要 在您的特定示例中,您可以测试以下内容:
如果您不习惯编写单元测试,而是通过编写特殊测试来测试代码,然后“直观地”验证(例如,您编写了一个简单的main方法,该方法接受使用键盘输入的参数,然后打印结果,然后继续输入值并验证自己的结果是否正确),然后,您可以开始以上述格式编写此类测试,并使用正确的assertXXX方法验证结果,而不是手动执行。这样,如果必须进行手动测试,则可以更轻松地重新运行测试。就像前面提到的@CoolBeans一样,请查看。这里有一个简短的介绍,让您也可以开始使用JUnit4.x
最后,如果您真的想了解更多关于测试和测试驱动开发(TDD)的知识,我建议您阅读Kent Beck的以下书籍:。我为IntelliJ和Eclipse提供了这篇文章 Eclipse: 要为您的项目进行单元测试,请遵循以下步骤(我使用Eclipse编写此测试): 1-单击新建->Java项目 2-写下你的项目名称并点击finish 3-右键单击您的项目。然后,单击New->Class 4-写下你的类名并点击finish 然后,像这样完成课程:
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()并单击finish。SetUp()将是初始化测试的位置
7-点击OK
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-在PackageExplorer中单击您的测试类,然后单击RunAs->JUnit测试
10-这是测试的结果
IntelliJ:
注意,我在截图中使用了IntelliJ IDEA community 2020.1。此外,您需要在执行这些步骤之前设置jre。我正在使用JDK11.0.4
1-右键单击项目的主文件夹->新建->目录。你应该称之为“测试”。
2-右键单击测试文件夹并创建适当的包。我建议创建与原始类相同的打包名称。然后,右键单击测试目录->将目录标记为->测试源根目录。
3-在test目录的正确包中,您需要创建一个Java类(我建议使用test.Java)。
4-在创建的类中,键入“@Test”。然后,在IntelliJ提供的选项中,选择将“JUnitx”添加到类路径。
5-在你的测试课上写下你的测试方法。方法签名类似于:
@Test
public void test<name of original method>(){
...
}
以下是我添加的导入:
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
这是我写的测试:
您可以检查以下方法:
Assertions.assertTrue(f.flipEquiv(node1_1, node2_1));
Assertions.assertEquals(<Expected>,<actual>);
Assertions.assertTrue(<actual>);
...
Assertions.assertEquals(
如果您的测试通过,结果如下:
我希望它能有所帮助。您可以在GitHub中看到项目的结构。其他答案已经向您展示了如何使用JUnit来设置测试类。JUnit不是唯一的Java测试框架。但是,专注于使用框架的技术细节会有损于指导您操作的最重要概念,因此我将谈谈这些
- 测试(各种各样的事物)将某物的实际行为(被测系统,SUT)与其预期行为进行比较
- 自动化测试可以使用
Assertions.assertTrue(f.flipEquiv(node1_1, node2_1));
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
Assertions.assertEquals(<Expected>,<actual>);
Assertions.assertTrue(<actual>);
...