我为了IntelliJ和Eclipse两种工具都提供这篇文章。
Eclipse:
若要为您的项目制作单元测试,请按照以下步骤操作(我使用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- 点击 文件(File) -> 新建(New) -> JUnit测试用例(JUnit Test Case)。
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- 在包资源管理器中右键单击测试类,然后单击“Run as -> JUnit Test”。
10- 这是测试结果。
IntelliJ: 请注意,我使用的是 IntelliJ IDEA community 2020.1 版本的截图。在执行这些步骤之前,您需要设置好 jre。我正在使用 JDK 11.0.4。
1- 在项目的主文件夹上右键单击->新建 ->目录。您应该将其命名为 'test'。
2- 在 test 文件夹上右键单击并创建适当的包。我建议创建与原始类相同的包名称。然后,您需要在 test 目录上右键单击 ->标记目录为 ->测试源根目录。
3- 在 test 目录的正确包中,您需要创建一个 Java 类(我建议使用 Test.java)。
4- 在创建的类中,键入 '@Test'。然后,在 IntelliJ 给出的选项中,选择将 'JUnitx' 添加到类路径。
5- 在测试类中编写测试方法。该方法的签名如下:
@Test
public void test<name of original method>(){
...
}
您可以像下面这样进行断言:
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>);
...
定义一个正常情况下,正确输入的期望和所需输出。
现在,声明一个类来实现测试,可以随意命名(通常为TestAddingModule),并向其中添加testAdd方法(如下所示):
assertEquals(expectedVal,calculatedVal)
进行断言。通过运行测试方法来测试它(在Eclipse中,右键单击,选择Run as → JUnit test)。
//for normal addition
@Test
public void testAdd1Plus1()
{
int x = 1 ; int y = 1;
assertEquals(2, myClass.add(x,y));
}
根据需要添加其他情况。
测试您的方法是否优雅地处理空输入(以下是示例)。
//if you are using 0 as default for null, make sure your class works in that case.
@Test
public void testAdd1Plus1()
{
int y = 1;
assertEquals(0, myClass.add(null,y));
}
@Test
注解。这是为了告诉单元测试运行器,该方法代表一个单元测试,并应该被执行。没有用@Test
注解的方法将不会被测试运行器执行。 - Ali Shah Ahmednull
添加到 y
中不应该只给出 y
吗? - Adjitstatic
。 - Liang Zhang这是一个非常通用的问题,有很多方法可以回答。
如果您想使用 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方法验证结果,而不是手动验证。这样,您可以更轻松地重新运行测试,而不是手动测试。
像@CoolBeans提到的那样,可以看看jUnit。这里有一个简短的教程,可帮助您入门jUnit 4.x。
最后,如果您真的想了解更多关于测试和测试驱动开发(TDD)方面的知识,我推荐您阅读Kent Beck的以下书籍:《通过示例学习测试驱动开发》。