@BeforeClass:针对所有测试,只执行一次,且必须为static void;

@AfterClass:针对所有测试,只执行一次,且必须为static void;

@Before:每个测试方法前都会执行的方法;

@After:每个测试方法前都会执行的方法;

@Ignore:忽略方法;

我们一般使用@Test的注解基本就差不多了,一般@BeforeClass会用于加载配置,而@AfterClass一般会用于释放资源。

上面的代码有一个陌生的Assert断言,这个东西是干嘛的呢,简单的可以理解为if条件。断言里面的值应该返回什么样的值。Assert.assertEquals(num,1)。

这个你可以理解为if(num==1)System.out.println(“ok”);但是这个方法有很多种重载的类

@Test
public void test2() {
    List list1 = Arrays.asList("a""b");
    List list2 = Arrays.asList("a""b");
    List list3 = list2;

    Assert.assertEquals(list1,list2);//通过
    Assert.assertEquals(list3,list2);//通过
    Assert.assertSame(list3,list2);//通过
    Assert.assertSame(list1,list2);//不通过,因为list1和list2分别指向不同的内存地址
}

web模拟

我们在@SpringBootTest注解上面加上使用随机端口启动

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)

@Autowired
private TestRestTemplate testRestTemplate;

@Test
public void test3() throws URISyntaxException {
    String result = testRestTemplate.getForObject("/demo/test1", String.class);
    Assert.assertEquals(result,"hello junit test");
}

TestRestTemplate 是不是很熟悉,是的Springboot还为RestTemplate建立了专门的测试类。

注意:一定要使用随机端口启动,否则执行失败。但是笔者感觉这个专门写个测试类很麻烦,还不如直接使用postman测试,你们觉得呢?

数据库测试

@Test
@Transactional
public void test4() {
    User user = new User();
    user.setName("abc");
    user.setAge(19);
    user.setBirthday(new Date());
    userJpa.save(user);
    Assert.assertTrue(user.getId()!=null);
    Assert.assertNotNull(user.getId());
}

注意:如果不想污染数据库,可以加上@Transactional,执行成功之后数据库事务会回滚,不会将数据真正插入到数据库中。

idea为我们快速的创建test单元测试文件提供了快捷方式

单元测试java举例_java单元测试_单元测试java怎么写

选中需要进行单元测试的方法,右键–>go to–>Test就会为我们创建单元测试文件。

文章已经同步更新到 Java实验室官方站点:

重磅!Java纯交流群(无广告)已成立

在群里和大家分享一些Java开发相关的知识,包括部分自己的实战项目,基础入门知识,spring,jvm,mysql等等。也会免费分享一些Java视频教程、电子资料、Mysql资料、Kubernetes及最新Java面试资料。

同时为了帮助到其他技术栈 小伙伴,我也准备了一些Python,前端,Linux,C语言等其他技术资料!

有兴趣入群的同学,可长按扫描下方二维码添加微信

一定要备注:Java,可更快被通过且邀请进群

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注