private InputStream inputStream;
private SqlSessionFactory factory;
private SqlSession sqlSession;
private IUserDao userDao;
@BeforeAll//用于在测试代码之前进行
public void init() throws Exception{
String resources = "SqlMapConfig.xml";
inputStream = Resources.getResourceAsStream(resources);
factory = new SqlSessionFactoryBuilder().build(inputStream);
sqlSession = factory.openSession();
userDao = sqlSession.getMapper(IUserDao.class);
System.out.println("BeforeAll");
@AfterAll //用于在测试之后进行
public void close() throws Exception{
sqlSession.close();
inputStream.close();
System.out.println("AfterAll");
@Test
public List
finAll(){
List users = userDao.findAll();
for (User user : users) {
System.out.println(user);
return users;
import com.jhsf.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
public class IUserDaoTest {
private static InputStream inputStream;
private static SqlSessionFactory factory;
private static SqlSession sqlSession;
private static IUserDao userDao;
@BeforeAll//用于在测试代码之前进行
public static void init() throws Exception{
String resources = "SqlMapConfig.xml";
inputStream = Resources.getResourceAsStream(resources);
factory = new SqlSessionFactoryBuilder().build(inputStream);
sqlSession = factory.openSession();
userDao = sqlSession.getMapper(IUserDao.class);
System.out.println("BeforeAll");
@AfterAll //用于在测试之后进行
public static void close() throws Exception{
sqlSession.close();
inputStream.close();
System.out.println("AfterAll");
// 测试之间输出结果,不用返回值,否则依旧回显示没有发现测试
@Test
public void finAll(){
List users = userDao.findAll();
for (User user : users) {
System.out.println(user);
// return users;
将@AfterAll和@BeforeAll的方法更改为静态的方法,如果涉及变量也更改为静态变量。将@BeforeAll 和 @AfterAll 的所有代码注释掉,单独写个测试,发现是可以运行的。将@BeforeAll 和 @AfterAll 的所有代码取消注释,则报错.代码编写完没有任何的一个报错,但是在运行时,显示一直没有测试.
对于所有的
Java
开发人员来说,你可以
没有
听说过
Spring
或是Hibernate框架,但是一定听说过
JUnit
。
JUnit
作为
Java
单元测试
的鼻祖与事实上的标准,在非常多的项目中被使用。即便新兴的
单元测试
框架,如TestNG等,不断出现,
JUnit
的重要性仍然是不言而喻的。目前广泛使用的是
JUnit
4版本,而
JUnit
即将迎来它的最新版本
JUnit
5。
JUnit
5在增加了很多的新特性的同时,又保持了对
JUnit
4的向后兼容性。本文对
JUnit
5进行了详细的介绍。与之前的版本不同,
JUnit
5由三个不同的模块组成。第一个模块是
JUnit
平台,其主要作用是在JVM上启动
测试
框架。它定义了一个抽
右键
发现
没有
Junit
测试
,只能
测试
整个类,并且报错:
java
.lang.Exception: The class com.mzy.repository.ProductCategoryRepositoryTest is not public.
发现
是因为类名前面
没有
加上public,加上了便迎刃而解
完美解决:nal Error occurred.
org.
junit
.platform.commons.
JUnit
Exception: TestEngine with ID '
junit
-jupiter' failed to discover tests
at org.
junit
.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.
java
:189)at org.
junit
.platform.launche
surefire-plugin版本:2.12
Junit
5
在终端执行mvn -Dtest=TestClass test,显示No tests were executed!,Tests run:0
检查导入的包
没有
问题,单独运行
测试
类可正常执行
测试
用例。
尝试办法1:在-Dtest中加上文件所在位置包名(mvn -Dtest=com.xxx.TestClass test);未解决
尝试办法2:尝试重新加载依赖;未解决
尝试办法3:执行mvn clean,之后再执行test;未解
Spring
JUnit
5 注解
测试
是一种基于
JUnit
5 平台的
单元测试
方法,通过使用
Spring
扩展提供的注解来实现依赖注入、AOP、事务控制等功能,从而方便地进行
单元测试
。
下面是
Spring
JUnit
5 注解
测试
常用的注解及其作用:
1. @ExtendWith(
Spring
Extension.class):指定运行
测试
的类为
Spring
Extension,该类会创建
Spring
的上下文环境,并自动加载指定的配置文件或配置类。
2. @ContextConfiguration:指定
Spring
的配置文件或配置类,用于创建
Spring
的上下文环境。
3. @Autowired:自动装配
Spring
容器中的 Bean,可以省略 setter 方法。
4. @Transactional:在
测试
方法中添加该注解可以实现事务控制,
测试
方法执行完成后自动回滚事务。
5. @Test:用于标记
测试
方法。
下面是一个简单的
Spring
JUnit
5 注解
测试
的例子:
```
java
@ExtendWith(
Spring
Extension.class)
@ContextConfiguration(classes = AppConfig.class)
@Transactional
public class UserServiceTest {
@Autowired
private UserService userService;
@Test
public void testAddUser() {
User user = new User();
user.setUsername("test");
user.setPassword("123456");
userService.addUser(user);
User addedUser = userService.getUserByName("test");
Assertions.assertEquals("test", addedUser.getUsername());
在该例子中,@ExtendWith 指定了运行
测试
的类为
Spring
Extension,@ContextConfiguration 指定了需要加载的配置类 AppConfig,@Transactional 用于进行事务控制,@Autowired 实现了依赖注入,@Test 标记了
测试
方法。相比于
Spring
JUnit
4 注解
测试
,
Spring
JUnit
5 注解
测试
更加简洁、易读,而且支持更多的
测试
特性。