Junit4基本操作

Assert

  • assertEquals(“message”,A,B),判断A,B是否相等,调用equals()方法
  • assertSame(“message”,A,B),判断A,B是都相等,使用==操作符
  • assertTrue(“message”,A),判断A条件是否为真
  • assertFalse(“message”,A),判断A条件是否为假
  • assertNotNull(“message”,A),判断A对象是否不为null
  • assertArrayEquals(“message”,A,B),判断A数组与B数组是否相等

Junit4测试代码实例

  • @BeforeClass和@AfterClass需要是静态方法
public class MyServiceTest {
    private MyService myService;
    private String msg = "Hello world!";

    @BeforeClass
    public static void beforeClassTest() {
        System.out.println("单元测试开始之前执行初始化........");
        System.out.println("----------------------------");
    }

    @Before
    public void beforeTest() {
        System.out.println("单元测试方法开始之前执行.........");
        myService = new MyService();
    }

    @Test
    public void test1() {
        myService.print(msg);
        assertEquals("Hello world!", myService.print(msg));
    }

    @Test
    public void test2() {
        myService.print(msg);
        assertEquals(msg, myService.print(msg));
    }

    @Test
    public void test3() {
        myService.print(msg);
        assertEquals("hello", myService.print(msg));
    }

    @After
    public void afterTest(){
        System.out.println("单元测试方法结束后执行..............");
    }

    @AfterClass
    public static void afterClass(){
        System.out.println("---------------------------");
        System.out.println("单元测试结束之后执行.........");
    }
}

Suite

用来一次性运行多个测试用例,

@RunWith(Suite.class)
@Suite.SuiteClasses({MyServiceTest.class})
public class Test1 {
    //虽然它是空的,但是它会将@Suite.SuiteClasses()中的所有测试方法执行一遍
}

Spring boot单元测试

1. 在pom中添加依赖

提供许多测试库

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
</dependency>

2. Spring boot测试脚手架

@RunWith(SpringRunner.class)
@SpringBootTest
public class MyControllerTest {
    @Autowired
    MyService myService;

    @Test
    public void testService(){
        
    }
}

3.测试Service

  • Service测试完成后数据回滚
    单元测试默认会在结束后进行事务回滚
  • Service依赖其他未开发完成的Service
    Spring boot会集成Mockito模拟为完成的Service
  • 模拟真实的面向数据库事务
    使用@Sql执行Sql脚本初始化数据

测试类代码

@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional
//@Rollback(false)
public class MyControllerTest {
    @Autowired
    TestService testService;

    @Test
    public void select() {
        System.out.println(testService.select());
    }

    @Test
    public void insert() {
        com.example.rediscache.pojo.Test test = new com.example.rediscache.pojo.Test();
        test.setName("李四");
        System.out.println(testService.insert(test));
        System.out.println(test);
        System.out.println(testService.select());
    }

    @Test
    public void update() {
        com.example.rediscache.pojo.Test test = new com.example.rediscache.pojo.Test();
        test.setId(3);
        test.setName("李云龙");
        System.out.println(testService.update(test));
    }

    @Test
    public void delete() {
        System.out.println(testService.delete(3));
    }
}

Service代码

@Service
public class TestService {
    @Autowired
    TestMapper testMapper;

    public List<Test> select(){
        return testMapper.select();
    }

    public int insert(Test test){
        return testMapper.insert(test);
    }

    public int update(Test test){
        return testMapper.update(test);
    }

    public int delete(int id){
        return testMapper.delete(id);
    }
}

Mapper代码

@Mapper
public interface TestMapper {
    @Select("SELECT * FROM test1")
    public List<Test> select();

    @Insert("INSERT INTO test1(name) VALUES(#{name})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    public int insert(Test test);

    @Delete("DELETE FROM test1 WHERE id=#{id}")
    public int delete(int id);

    @Update("UPDATE test1 SET name=#{name} WHERE id=#{id}")
    public int update(Test test);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值