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 企业应用

最新文章

  1. Android成长日记-Android布局优化
  2. Python在安装第三方模块遇到的问题及解决办法
  3. css伪类运用
  4. VirtualBox – Error In supR3HardenedWinReSpawn 问题解决办法
  5. UIApplication和delegate
  6. HTML5 新点总结-持续
  7. Android Studio上修改项目(module)的包名(Package Name)
  8. jquery-post get 同步问题
  9. 【BZOJ1975】【SDOI2010】魔法猪学院(搜索,A*,贪心)
  10. Django-CKedtior图片找不到的问题
  11. Java基础 -- final关键字
  12. java的优点和误解 《java核心技术卷i》第一章
  13. falsk 与 django 过滤器的使用与区别
  14. docker容器备份、恢复和迁移volume方案
  15. java EE 环境配置(JDK + Tomcat + Eclipse for java EE)
  16. [WinCE] Win CE 屏幕截图
  17. [转]MBTiles 1.2 规范翻译
  18. std::string compare
  19. 五款超实用的开源 SVG 工具
  20. http协议------>概述和动手实践认识Http协议

热门文章

  1. 变量命名规范及str类型
  2. NOIP2018提高组省一冲奖班模测训练(三)
  3. Maven学习总结(24)——Maven版本管理详解
  4. MyBatis学习总结(18)——MyBatis与Hibernate区别
  5. 通达OA 小飞鱼OA实施法:以项目管理的方式来推进工作流设计项目实施
  6. bzoj1066: [SCOI2007]蜥蜴(最大流)
  7. hdoj--3666--THE MATRIX PROBLEM(差分约束+SPFA深搜)
  8. layui layer 弹框
  9. Eclipse schema xml提示
  10. STM8S汇编代码分析