zoukankan      html  css  js  c++  java
  • java 经常使用測试框架

    1. 经常使用单元化測试框架 junit4 , TestNG

    能够通过注解 @Before @After @BeforeClass @AfterClass 分别作方法与类级的初始化与结束动作。


    testNG演示样例:

    public class TestngAnnotation {
      // test case 1
      @Test
      public void testCase1() {
          System.out.println("in test case 1");
      }
      // test case 2
      @Test
      public void testCase2() {
          System.out.println("in test case 2");
      }
      @BeforeMethod
      public void beforeMethod() {
          System.out.println("in beforeMethod");
      }
      @AfterMethod
      public void afterMethod() {
          System.out.println("in afterMethod");
      }
      @BeforeClass
      public void beforeClass() {
          System.out.println("in beforeClass");
      }
      @AfterClass
      public void afterClass() {
          System.out.println("in afterClass");
      }
      @BeforeTest
      public void beforeTest() {
          System.out.println("in beforeTest");
      }
      @AfterTest
      public void afterTest() {
          System.out.println("in afterTest");
      }
      @BeforeSuite
      public void beforeSuite() {
          System.out.println("in beforeSuite");
      }
      @AfterSuite
      public void afterSuite() {
          System.out.println("in afterSuite");
      }
    }

    其运行顺序为

    in beforeSuite
    in beforeTest
    in beforeClass
    in beforeMethod
    in test case 1
    in afterMethod
    in beforeMethod
    in test case 2
    in afterMethod
    in afterClass
    in afterTest
    in afterSuite

    对于測试类较多时。能够指定需測试的类 使用打包測试

    @RunWith(Suite.class) //指定suit測试运行器
    @Suite.SuiteClasses({Junit4TimeoutTest.class,Junit4ExceptionTest.class})
    public class Junit4SuiteTest {
    }

    如此对 Junit4TimeoutTest 与 Junit4ExceptionTest 进行打包測试。无需一个个分别測试。

    2. mockito 模拟对象,并做交互验证

    mock 能够mock接口和实现类
    verify 验证过程是否被调用

    Sample mockedSample = mock(Sample.class);//能够是接口或者是实现类
    //验证交互
    when(mockedSample.getName()).thenReturn("sample");
    verify(mockSampleService, atMost(1)).getName(); // 验证方法之多调用了1次

    3. Unitils

    能够通过模块化的配置。集成 spring, db (MYSQL , HIBERIATE) 以及 各种第三方測试框架(junit 4, testNG)

    4. 測试web层

    spring mock中 为一些依赖于容器的接口提供了模拟类,能够使用户在不启动容器的情况下 运行单元測试。
    org.springframework.mock.jndi 为jndi spi提供模拟类。摆脱对java ee容器的依赖
    org.springframework.mock.web 为servlet api接口提供模拟类(HttpServletRequest, ServletContext),脱离servlet容器測试

    5. client请求模拟

    spring RestTemplate
    RestTemplate 是用来在client訪问web服务的类。

        @Before
        public void init() {
            driver = new HtmlUnitDriver(); //IE
        }
        @Test
        public void loginCheck(){
            //全然装载页面后将控制返回给測试脚本
            driver.get("http://localhost/index.html"); 
            //element = driver.findElement(By.xpath( "//input[@id=’xxx’]" ));
            WebElement userName = driver.findElement(By.name("userName"));  
            WebElement password = driver.findElement(By.name("password"));
            //不论什么页面元素都能够调用sendKeys,
            userName.sendKeys("tom");     
            password.sendKeys("1234");  
            //提交表单
            driver.findElement(By.id( "loginBtn" )).click();
            //driver.findElement(By.id( "submit" )).submit(); 要求element必须在表单中。否则抛出NoSuchElementException
            //验证返回的主页面 main.jsp
            assertThat(driver.getTitle(), equalTo("this's title"));
            assertThat(driver.getPageSource(), containsString("tom"));
            WebElement body  = driver.findElement(By.xpath( "//body" ));
            assertThat(body.getText(), containsString("tom,welcome"));
        }

    上述演示样例引子spring3.x 企业应用

  • 相关阅读:
    websocket --工作原理
    RabbitMQ
    django-缓存机制,form组件
    rabbitmq-安装
    学城项目
    django的orm--contenttype操作
    rest-framework序列化
    python模块与包
    python中的模块和包
    匿名函数python内置高阶函数以及递归
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7049436.html
Copyright © 2011-2022 走看看