社区网站8.1 单元测试

  Spring Boot Testing
(1)依赖:spring-boot-starter-test
(2)包括:Junit、Spring Test、AssertJ
  Test Case
(1)要求:保证测试方法的独立性
(2)步骤:初始化数据、执行测试代码、验证测试结果、清理测试数据。
(3)常用注解:@BeforeClass(在类初始化之前)、@AfterClass、@Before(每调一个测试方法前)、@After(每调一个测试方法后)。
  新建SpringBootTests类,

// 对类,对这个类只调用一次
    @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");

        //初始化测试数据(作为类的成员变量)    //这种初始化方式(放在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");
    }

  若选中整个类(即右键SpringBootTests运行),可以看到test1和test2前后都有before和after,而BeforeClass和AfterClass是只出现一次。
  再添加

@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());  //帖子内容是否一致,其实也可以把DiscussPost的toString方法改写一下,然后用equals比较两个对象是否相等
        }

    @Test
    public void testUpdateScore(){
        int rows = discussPostService.updateScore(data.getId(),2000);
        Assert.assertEquals(1,rows);  //判断修改行数是否等于1
        DiscussPost post = discussPostService.findDiscussPostById(data.getId());
        Assert.assertEquals(2000,post.getScore(),2); //改完分数后,判断是否修改成了2000。判断两个小数,需要传入第三个参数:精度
    }

  before和after方法的缺点是效率比较低(每次都要运行),但好处是不用依赖“别人”,可以独立运行测试。
  需要注意的是testFindById方法和testUpdateScore方法都引用了data这个变量名,但是它们引用的对象是不同的(因为每个方法调用前后,都新建和删除了data对象)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值