IntelliJ IDEA进行Java单元测试的完整步骤
单元测试需依赖JUnit框架,IntelliJ IDEA支持通过构建工具(Maven/Gradle)快速添加依赖。
Open Module Settings→Libraries→+→From Maven,搜索并添加以下依赖(以JUnit 5为例):org.junit.jupiter:junit-jupiter-api:5.8.2(核心API)、org.junit.jupiter:junit-jupiter-engine:5.8.2(测试引擎)、org.junit.jupiter:junit-jupiter-params:5.8.2(参数化测试支持)。build.gradle的dependencies块中添加:testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2'、testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2'。测试类需与被测类放在同一包(或对应测试包,如com.example.myapp→com.example.myapp.test),命名规范为被测类名+Test(如Calculator→CalculatorTest)。
Calculator),右键→Go to→Test→Create New Test,选择JUnit版本(推荐JUnit 5)和需要测试的方法,点击OK即可生成测试类框架。src/test/java目录下右键→New→Java Class,命名为CalculatorTest,然后添加@Test注解的测试方法。测试方法需用@Test注解标记,通过JUnit的断言(Assertions)方法验证结果是否符合预期。常用断言包括:
assertEquals(expected, actual):验证预期值与实际值相等;assertTrue(condition):验证条件为true;assertThrows(exceptionClass, executable):验证代码抛出指定异常。Calculator类的加减乘除方法):import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class CalculatorTest {
private Calculator calculator;
@BeforeEach // 每个测试方法执行前初始化被测对象
void setUp() {
calculator = new Calculator();
}
@Test
void testAdd() {
assertEquals(5, calculator.add(2, 3)); // 验证2+3=5
assertEquals(-1, calculator.add(2, -3)); // 验证2+(-3)=-1
}
@Test
void testDivideByZero() {
assertThrows(ArithmeticException.class, () -> calculator.divide(5, 0)); // 验证除零抛出异常
}
}
有多种方式运行测试,满足不同场景需求:
Run 'CalculatorTest'(或使用快捷键Ctrl+Shift+F10)。Run 'testAdd()'。Run→Run 'All Tests'(或使用快捷键Ctrl+Shift+F10)。Run窗口显示结果:绿色进度条表示所有测试通过,红色进度条表示存在失败测试,点击具体测试项可查看详细错误信息(如断言失败原因、异常堆栈)。测试覆盖率反映测试用例覆盖代码的程度,帮助识别未测试的代码路径。
Run 'CalculatorTest' with Coverage(或点击顶部菜单Run→Run with Coverage)。Project工具窗口显示覆盖率数据(如类、方法的覆盖百分比),同时编辑器中绿色高亮表示已覆盖的代码行,红色高亮表示未覆盖的代码行,黄色高亮表示部分覆盖的代码行。JUnit支持多种高级测试场景,提升测试灵活性:
@ParameterizedTest和@ValueSource注解,使用多组参数运行同一测试方法,减少重复代码。@ParameterizedTest
@ValueSource(ints = {1, 2, 3, 4})
void testMultiplyByTwo(int input) {
assertEquals(input * 2, calculator.multiply(input, 2));
}
assertThrows验证代码是否抛出预期异常(如除零异常)。@RunWith(Suite.class)和@Suite.SuiteClasses注解,将多个测试类组合成一个测试套件,统一运行。@RunWith(Suite.class)
@Suite.SuiteClasses({CalculatorTest.class, AnotherClassTest.class})
class TestSuite {}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。