8.1单元测试

前面课程 将web开发的相关技术全部讲解完毕,项目功能全部完善

本章将对项目进行收尾,收尾体现在两个方面:

1.项目上线前后要做什么事情:上线之前如何做单元测试;上线时候如何部署;上线以后如何对项目进行有效监控
2.对整个课程进行总结、概况,
3.讲解面试题和技巧

不仅要在 上线之前做单元测试,在开发过程中,每个功能开发完都要做,单元测试贯穿于整个开发过程中
在这里插入图片描述
在SpringBootTests类中:

@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = CommunityApplication.class)
public class SpringBootTests {

    @Autowired
    private DiscussPostService discussPostService;

    private DiscussPost data;

    //调用一个测试方法,这俩方法只执行一次
    @BeforeClass
    public static void beforeClass() {
        System.out.println("beforeClass");
    }

    @AfterClass
    public static void afterClass() {
        System.out.println("afterClass");
    }

    //每调用一个测试方法,前后各执行一次
    @Before
    public void before() {
        System.out.println("before");

        // 初始化测试数据
        data = new DiscussPost();
        data.setUserId(111);
        data.setTitle("Test Title");
        data.setContent("Test Content");
        data.setCreateTime(new Date());
        discussPostService.addDiscussPost(data);
    }

    @After
    public void after() {
        System.out.println("after");

        // 删除测试数据
        discussPostService.updateStatus(data.getId(), 2);
    }

    @Test
    public void test1() {
        System.out.println("test1");
    }

    @Test
    public void test2() {
        System.out.println("test2");
    }

执行test1,结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
beforeClass和afterClass 是在程序 初始化过程中执行的
before 和 afte 是在方法之前之后调用的

执行总的方法
在这里插入图片描述
两个测试方法都被执行:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

充分说明了 程序 初始化过程中,beforeClass和afterClass 只在类加载和销毁之间 执行一次

接下来测试帖子的services,先注入

@Autowired
private DiscussPostService discussPostService;

private DiscussPost data;

希望在调用每个方法之前,都初始化一个新数据。调用每个方法之后,也初始化一个新数据。

因此在before里初始化比较合适

 private DiscussPost data;//声明成员变量
//每调用一个测试方法,前后各执行一次。每运行一个测试方法,都要执行一遍。
@Before
public void before() {
    System.out.println("before");

    // 初始化测试数据,实例化一个DiscussPost,然后将其插入到表中
    data = new DiscussPost();
    data.setUserId(111);
    data.setTitle("Test Title");
    data.setContent("Test Content");
    data.setCreateTime(new Date());
    discussPostService.addDiscussPost(data);
}

因此,每个测试方法依赖于独一份的数据,执行after后删除数据

@After
public void after() {
    System.out.println("after");

    // 删除测试数据,把data的状态设置为2
    discussPostService.updateStatus(data.getId(), 2);
}

开始测试:

@Test
public void testFindById() {//测试查询方法
    DiscussPost post = discussPostService.findDiscussPostById(data.getId());
    //通过断言,判断结果对不对(即当前条件成立与否),不成立则显示异常
    Assert.assertNotNull(post);
    Assert.assertEquals(data.getTitle(), post.getTitle());
    Assert.assertEquals(data.getContent(), post.getContent());
}

对整个类进行测试
在这里插入图片描述
在这里插入图片描述
测试testFindById、testUpdateScore时,均各生成了一个新的data(虽然变量名字都一样,但内部数据是不同的)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值