简单的Tomcat实现--1.3单元测试

Posted xsliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的Tomcat实现--1.3单元测试相关的知识,希望对你有一定的参考价值。

使用Juint进行测试

  • 在项目开发的过程中,需要不断的对已经完成的代码进行重构和修改,这使得每个部分的代码都需要一个稳定的测试程序。
  • 在以前的开发过程中,习惯使用main方法对该类中的方法进行测试,这种方法不适用于大型的项目,我们可能需要不断的修改main()方法从而让它完成测试工作,但是这会破还掉原来的逻辑并且测试成功还是失败都具有偶然性和不易见性。
  • 所以使用junit进行单元测试

Junit的简单使用

  • junit是一个测试框架,最简单的使用方式如下:
package demo.Junit;

import org.junit.Assert;
import org.junit.Test;

/**
 * @author :xiaosong
 * @description:TODO
 * @date :2020/8/3 16:29
 */
public class JunitDemo {
    @Test
    public void testSum() {
        int result = SumUtil.sum(1, 2);
        Assert.assertEquals(result, 3);
    }
}
  • 测试成功

技术图片

  • 添加新的测试方法
    @Test
    public void testSum1(){
        int result = SumUtil.sum(1,2);
        Assert.assertEquals(result, 10);
    }
  • 测试失败

技术图片

  • junit对比使用main()方法的好处显而易见

    • 首先,在增加新的测试之后,不会对之前的测试进行破坏
    • 如果测试失败了,将会立即得到通知+
  • junit利用了java的注解,除了@Test之外还有两个常见的注解,@Before@After分别用来测试开始之前做的事情和结束之后做的事情。

package demo.Junit;

import org.junit.Assert;
import org.junit.Test;
import org.junit.After;
import org.junit.Before;

/**
 * @author :xiaosong
 * @description:TODO
 * @date :2020/8/3 16:29
 */
public class JuintDemo {
    @Test
    public void testSum() {
        int result = SumUtil.sum(1, 2);
        Assert.assertEquals(result, 3);
    }
    @Test
    public void testSum1(){
        int result = SumUtil.sum(1,2);
        Assert.assertEquals(result, 10);
    }
    @After
    public void after(){
        System.out.println("测试结束后的工作,比如关闭文件,关闭数据库连接等等");
    }
    @Before
    public void before(){
        System.out.println("测试前的准备工作,比如打开文件,连接数据库等等");
    }
}
  • 上述代码的运行结果

技术图片

TestSuite

  • 当不得不运行多个测试类的时候,可以使用TestSuite让多个测试类一同运行,假设现在有两个测试类,JunitDemo1和JunitDemo2。
import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({JunitDemo1.class, JunitDemo2.class})
    public class TestSuite{
        
    }
  • 这样就可以实现同时运行两个测试类。

TestJerryMice

package test;

import cn.hutool.core.util.NetUtil;
import cn.hutool.core.util.StrUtil;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import util.MiniBrowser;

/**
 * @author :xiaosong
 * @description:TODO
 * @date :2020/8/3 17:04
 */
public class TestJerryMice {
    /**
     *   预先定义端口和ip,方便后续进行修改
     */
    private static int port = 10086;
    private static String ip = "127.0.0.1";
    @BeforeClass
    public static void beforeClass(){
        // 测试之前先看服务是否已经启动了
        if (NetUtil.isUsableLocalPort(port)){
            //如果端口被占用,以为这服务已经被启动,否则说明服务还没有启动
            System.out.println("please start up JerryMice first, then run test");
            System.exit(1);
        }
        else {
            System.out.println("Detected JerryMice already start, now begin test");
        }
    }
    /**
     * 准备一个工具方法,用来获取网页的返回
     */
    private String getContentString(String uri){
        String url = StrUtil.format("http://{}:{}{}", ip, port, uri);
        return MiniBrowser.getContentString(url);
    }
    @Test
    public void testHelloJerryMice(){
        String html = getContentString("/");
        Assert.assertEquals(html, "Hello JerryMice");
    }

}
  • 上面的测试代码的输出

技术图片

以上是关于简单的Tomcat实现--1.3单元测试的主要内容,如果未能解决你的问题,请参考以下文章

4Go语言单元测试性能测试与监控

4Go语言单元测试性能测试与监控

4Go语言单元测试性能测试与监控

为啥我必须切换纹理单元才能让我的片段着色器识别要使用的纹理?

C#测试

1.3 Tomcat的下载和安装