Java 的 JUnit 主要用于对 Java 代码进行单元测试,理论上只要是可以被 Java 调用的代码,基本都可以用 JUnit 来测,但适合程度和测试方式不同。下面按“能测什么 / 怎么测 / 注意事项”来说明。
✅ 最适合
public class MathUtil {
public static int add(int a, int b) {
return a + b;
}
}
测试:
@Test
void testAdd() {
assertEquals(3, MathUtil.add(1, 2));
}
✅ 特点:
✅ 非常推荐
public class OrderService {
public int calcTotal(int price, int count) {
return price * count;
}
}
✅ 适合测试:
✅ 可以测,但需要 Mock(如 Mockito)
@Service
public class UserService {
@Autowired
private UserRepository repo;
public User getUser(int id) {
return repo.findById(id);
}
}
测试:
@ExtendWith(MockitoExtension.class)
class UserServiceTest {
@Mock UserRepository repo;
@InjectMocks UserService service;
@Test
void testGetUser() {
when(repo.findById(1)).thenReturn(new User("Tom"));
assertEquals("Tom", service.getUser(1).getName());
}
}
✅ 适合:
⚠️ 能测,但一般不直接用 JUnit 打
方式一:MockMvc
@WebMvcTest(UserController.class)
class UserControllerTest {
@Autowired MockMvc mockMvc;
}
方式二:集成测试(@SpringBootTest)
✅ 适合:
✅ 可以测,但属于集成测试
@DataJpaTest@DataJpaTest
class UserRepositoryTest {
@Autowired UserRepository repo;
}
✅ 适合:
❌ 不属于“纯单元测试”
✅ 可以测
⚠️ 静态方法难 Mock(需用 PowerMock 或重构)
✅ 非常推荐
@Test
void testException() {
assertThrows(IllegalArgumentException.class,
() -> MathUtil.div(1, 0));
}
❌ 前端页面(HTML / JS) ❌ UI 交互(用 Selenium) ❌ 性能测试(用 JMH) ❌ 并发正确性(难稳定) ❌ 第三方系统真实行为(支付、短信)
JUnit 能测:Java 中任意可调用代码
✅ 最适合:无依赖、逻辑清晰的代码
✅ 可测:Service / Controller / DAO(配合 Mock 或 Spring)
❌ 不适合:UI、性能、真实外部系统
如果你愿意,可以告诉我:
我可以给你具体示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。