• java单元测试


    版本区别

    特性Junit 4Junit 5
    在当前类的所有测试方法之前执行。注解在静态方法上。此方法可以包含一些初始化代码。@BeforeClass@BeforeAll
    在当前类中的所有测试方法之后执行。注解在静态方法上。此方法可以包含一些清理代码。@AfterClass@AfterAll
    在每个测试方法之前执行。注解在非静态方法上。可以重新初始化测试方法所需要使用的类的某些属性。@Before@BeforeEach
    在每个测试方法之后执行。注解在非静态方法上。可以回滚测试方法引起的数据库修改。@After@AfterEach

    测试注解的作用

    @RunWith(SpringRunner.class)
    @org.springframework.boot.test.context.SpringBootTest
    @ContextConfiguration(classes = MyCommunityApplication.class)
    public class SpringBootTest {
    
        @Autowired
        private DiscussPostService discussPostService;
    
        private DiscussPost data;
    
        @BeforeClass
        public static void beforeAll() {
            System.out.println("beforeClass");
        }
    
        @AfterClass
        public static void afterAll() {
            System.out.println("afterClass");
        }
    
        @Before
        public void before() {
            System.out.println("before");
        }
    
        @After
        public void after() {
            System.out.println("after");
        }
    
        @Test
        public void test1(){
            System.out.println("test1");
        }
    
        @Test
        public void test2(){
            System.out.println("test2");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    执行test1,可以看到
    在这里插入图片描述
    打印的顺序是beforeClass、before、test1、after、afterClass,这也是。
    一般单元测试是直接运行整个测试类,然后查看哪个测试方法有错误,如:
    在这里插入图片描述
    全部通过:
    在这里插入图片描述

    实际项目的样例

    @RunWith(SpringRunner.class)
    @org.springframework.boot.test.context.SpringBootTest
    @ContextConfiguration(classes = MyCommunityApplication.class)
    public class SpringBootTest {
    
        @Autowired
        private DiscussPostService discussPostService;
    
        private DiscussPost data;
    
        @BeforeClass
        public static void beforeAll() {
            System.out.println("beforeClass");
        }
    
        @AfterClass
        public static void afterAll() {
            System.out.println("afterClass");
        }
    
        @Before
        public void before() {
            System.out.println("before");
    
            // initialize
            data = new DiscussPost();
            data.setUserId(111);
            data.setId(287);
            data.setTitle("Test title");
            data.setContent("Test content");
            data.setCreateTime(new Date());
            discussPostService.addDiscussPost(data);
            System.out.println(data.getId());
        }
    
        @After
        public void after() {
            System.out.println("after");
    
            // delete
            discussPostService.updateStatus(data.getId(), 2);
        }
    
        @Test
        public void testFindById(){
            DiscussPost discussPost = discussPostService.findDiscussPostById(data.getId());
            Assert.assertNotNull(discussPost);
            Assert.assertEquals(discussPost.getTitle(), data.getTitle());
            Assert.assertEquals(discussPost.getContent(), data.getContent());
        }
    
        @Test
        public void testUpdateScore() {
            int rows = discussPostService.updateScore(data.getId(), 2000.00);
            Assert.assertEquals(1, rows);
    
            DiscussPost post = discussPostService.findDiscussPostById(data.getId());
            Assert.assertEquals(2000.00, post.getScore(), 2);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    测试未通过:
    在这里插入图片描述

  • 相关阅读:
    【校招VIP】前端校招考点之UDP
    Photoshop 2024正式发布!内置最新PS AI,创意填充等功能无限制使用!
    节约软件开发成本,关键在这儿。
    Ansible-变量及加密
    pytorch代码实现之SAConv卷积
    Web 页面性能衡量指标-以用户为中心的效果指标
    Pytorch学习整理笔记(二)
    45、Flink 的 Process Function 详解
    2022-09-07 mysql/stonedb-多线程遍历元组问题分析
    Cesium--获取当前相机中心与地面的射线焦点
  • 原文地址:https://blog.csdn.net/weixin_44609676/article/details/132694127