老蒋的知识库

  • 首页
  • 文章归档
  • 关于页面

  • 搜索

Testng 与 Junit 5使用中的区别

发表于 2023-09-02 | 分类于 Java | 0 | 阅读次数 37

Srping注入bean与使用Mockito区别

总结:

  • Testng 通过Spring注入bean需要添加注解:@SpringBootTest,并继承AbstractTestNGSpringContextTests
  • Junit 5 通过Spring注入bean只需添加注解:@SpringBootTest
  • Testng 使用Mockito需要添加注解:@TestExecutionListeners(MockitoTestExecutionListener.class)
  • Junit 5 使用Mockito需要添加注解:@ExtendWith(SpringExtension.class)

Junit 5 示例代码

package com.douyin.game.demo;


import com.douyin.game.dao.RankDao;
import com.douyin.game.model.Rank;
import com.douyin.game.service.DouyinGameRankService;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.junit.jupiter.SpringExtension;

/**
 * Junit使用Mockit只需要增加注解:@ExtendWith(SpringExtension.class)
 * Junit使用Spring注入只需要添加注解:@SpringBootTest
 */
@ExtendWith(SpringExtension.class)
@SpringBootTest
@Slf4j
public class JunitTest {
    @MockBean
    private RankDao rankDao;

    @Autowired
    private DouyinGameRankService douyinGameRankServiceMock;


    @Test
    public void testMockito(){
        Rank rank = new Rank();
        rank.setId(1L);
        rank.setLiveUserName("测试user");
        rank.setRoomId("测试roomId");
        Mockito.when(rankDao.getRank(1L)).thenReturn(rank);

        log.debug(String.valueOf(douyinGameRankServiceMock.getRank(1L)));
    }
}

Testng示例代码

package com.douyin.game.demo;

import com.douyin.game.dao.RankDao;
import com.douyin.game.model.Rank;
import com.douyin.game.service.DouyinGameRankService;
import lombok.extern.slf4j.Slf4j;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener;
import org.springframework.test.context.TestExecutionListeners;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.annotations.Test;


/**
 * Testng无法使用注解:@ExtendWith(SpringExtension.class)
 * Test使用Mockito需要添加注解:@TestExecutionListeners(MockitoTestExecutionListener.class)
 * Testng使用Spring注入Bean需要添加注解:@SpringBootTest,并且同时继承:AbstractTestNGSpringContextTests
 */
//@ExtendWith(SpringExtension.class)
@Slf4j
@TestExecutionListeners(MockitoTestExecutionListener.class)
@SpringBootTest
public class TestngTest extends AbstractTestNGSpringContextTests {
    @MockBean
    private RankDao rankDao;

    @Autowired
    private DouyinGameRankService douyinGameRankServiceMock;

    @Test(groups = "demo")
    public void testMockito() {
        Rank rank = new Rank();
        rank.setId(1L);
        rank.setLiveUserName("测试user");
        rank.setRoomId("测试roomId");
        Mockito.when(rankDao.getRank(1L)).thenReturn(rank);

        log.debug(String.valueOf(douyinGameRankServiceMock.getRank(1L)));
    }
}

  • 本文作者: jagger
  • 本文链接: /archives/java-dan-yuan-ce-shi-mock-yu-dao-de-keng
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
Testng遇到的坑
Mockito与MockMvc使用技巧
jagger

jagger

66 日志
31 分类
0 标签
Creative Commons
0%
© 2026 jagger
由 Halo 强力驱动