欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java测试工具有哪些(常用的网络测试软件)

程序员文章站 2022-03-01 13:10:32
junit是一个优秀的开源的java单元测试框架,也是目前比较流行且使用频率比较高的一款,今天我们就来讲讲junit怎么用。junit主要用于白盒测试、回归测试、单元测试。首先我们来新建工程,还是跟原...

junit是一个优秀的开源的java单元测试框架,也是目前比较流行且使用频率比较高的一款,今天我们就来讲讲junit怎么用。

junit主要用于白盒测试、回归测试、单元测试。

首先我们来新建工程,还是跟原来一样建立。建立之后看看pom.xml文件,已经默认的加入了junit的依赖

<dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-test</artifactid>
    <scope>test</scope>
</dependency>

看看我们建立的工程,idea都给我们生成了什么样的目录结构

java测试工具有哪些(常用的网络测试软件)

我们的junit单元测试文件就放在test/java下面,我们先看一个基础用法,在lesson9applicationtest里面增加一个方法:

@springboottest
@runwith(springrunner.class)//使用springrunner加载上下文
public class lesson9applicationtests {
    @test//这个是一个test单元测试文件
    public void test1() {
        int num = new integer(1);
        assert.assertequals(num,1);
    }
}

在这个方法的左边会有响应的图标,第一个叶子样的图标标注这个是一个springboot的测试文件,在启动的时候能看到我们正常启动application的banner图标,说明加载了springboot的上下文。

我们直接在第二个圆形√加三角形的图标点击,就能运行了。

java测试工具有哪些(常用的网络测试软件)
java测试工具有哪些(常用的网络测试软件)

junit连常用的注解

  1. @runwith:标识为junit的运行环境;
  2. @springboottest:获取启动类、加载配置,确定装载spring boot;
  3. @test:声明需要测试的方法;
  4. @beforeclass:针对所有测试,只执行一次,且必须为static void;
  5. @afterclass:针对所有测试,只执行一次,且必须为static void;
  6. @before:每个测试方法前都会执行的方法;
  7. @after:每个测试方法前都会执行的方法;
  8. @ignore:忽略方法;

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

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

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

  • asserttrue/false 判定第一个条件是true还是false
  • assertequals 接收两个参数,第一个是参数值,第二个是希望返回的值
  • assertnotequals 这个跟上一个方法恰好相反,相当于if(param!=param2)
  • assertsame/notsame 判定两个变量是否指向同一个内存地址
@test
public void test2() {
    list<string> list1 = arrays.aslist("a", "b");
    list<string> list2 = arrays.aslist("a", "b");
    list<string> 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测试工具有哪些(常用的网络测试软件)

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