创建项目
idea创建空项目Empty Project。项目中创建模块,选择SpringBoot Initialize快速构建SpringBoot项目。
 
 依赖这里什么也不用选择。
 
 
 pom文件中默认有两个依赖:
- spring-boot-starter springboot如果不导入任何依赖,默认的一个基础依赖。
- spring-boot-starter-test springboot使用junit的测试依赖,默认也是导入的。
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
使用Junit
idea使用SpringBoot Initialize创建项目时,自动导入了spring-boot-starter-test测试依赖,如果是手动创建的Maven项目,注意要手动添加上这个依赖。
 创建Dao要测试的类
public interface UserDao {
    public void save();
}
@Repository
public class UserDaoImpl implements UserDao {
    @Override
    public void save() {
        System.out.println("save success");
    }
}
打开测试类,在启动测试Dao组件。
 
@SpringBootTest
class Springboot02JunitApplicationTests {
    @Autowired
    private UserDao userDao;
    @Test
    void contextLoads() {
        userDao.save();
    }
}
测试输出:
save success
补充
如果我们将测试类更换个位置,会测试失败,像下面这样。
 
 在运行测试程序,程序报错:
java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, 
you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test
错误原因
测试类启动时,会在
自己所在包和父包中寻找带有@SpringBootConfiguration的启动类(@SpringBootConfiguration包含在@SpringBootApplication中),然后进行测试。我们将测试类转移位置后,测试类找不到SpringBoot的启动类,无法测试。
2种解决方法:
- 测试类上使用@SpringBootTest(classes=…)或者@ContextConfiguration (classes=…) ,指定测试类启动类在哪里。
@SpringBootTest(classes = Springboot02JunitApplication.class)
class Springboot02JunitApplicationTests {
    @Autowired
    private UserDao userDao;
    @Test
    void contextLoads() {
        userDao.save();
    }
}
或者
@SpringBootTest()
@ContextConfiguration(classes = Springboot02JunitApplication.class)
class Springboot02JunitApplicationTests {
    @Autowired
    private UserDao userDao;
    @Test
    void contextLoads() {
        userDao.save();
    }
}



















