`

单元测试(一)

阅读更多
package com.ssh.junitTest;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class WordDealUtil {

	 /***
	  *  将 Java 对象名称(每个单词的头字母大写)按照
	  * 数据库命名的习惯进行格式化
	  * 格式化后的数据为小写字母,并且使用下划线分割命名单词
	  * @param name
	  * @return
	  */
	 public static String wordFormat4DB(String name){ 
		 Pattern p = Pattern.compile("[A-Z]"); 
		 Matcher m = p.matcher(name); 
		 StringBuffer sb = new StringBuffer(); 
		
		 while(m.find()){ 
			 m.appendReplacement(sb, "_"+m.group()); 
		 } 
		 return m.appendTail(sb).toString().toLowerCase(); 
	 } 

	
}

 

package com.ssh.junitTest;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;

import org.junit.Test;

public class TestWordDealUtil {
		 // 测试 wordFormat4DB 正常运行的情况
		 @Test public void wordFormat4DBNormal(){ 
			 String target = "employeeInfo"; 
			 String result = WordDealUtil.wordFormat4DB(target); 
			 //静态断言方法  employee_info 为期望值 employeeInfo为所测试的值
			 assertEquals("employee_info", result); 
		 } 
		 
		 // 测试 null 时的处理情况
		 @Test public void wordFormat4DBNull(){ 
			 String target = null; 
			 String result = WordDealUtil.wordFormat4DB(target); 
			 assertNull(result); 
		 } 
		
		 // 测试空字符串的处理情况
		 @Test public void wordFormat4DBEmpty(){ 
			 String target = ""; 
			 String result = WordDealUtil.wordFormat4DB(target); 
			 assertEquals("", result); 
		 } 

		 // 测试当首字母大写时的情况
		 @Test public void wordFormat4DBegin(){ 
			 String target = "EmployeeInfo"; 
			 String result = WordDealUtil.wordFormat4DB(target); 
			 assertEquals("employee_info", result); 
		 }
		
		 // 测试当尾字母为大写时的情况
		 @Test public void wordFormat4DBEnd(){ 
			 String target = "employeeInfoA"; 
			 String result = WordDealUtil.wordFormat4DB(target); 
			 assertEquals("employee_info_a", result); 
		 } 
		
		 // 测试多个相连字母大写时的情况
		 @Test public void wordFormat4DBTogether(){ 
			 String target = "employeeAInfo"; 
			 String result = WordDealUtil.wordFormat4DB(target); 
			 assertEquals("employee_a_info", result); 
		 } 

		 
		   
		 
}

 

package com.ssh.junitTest;

import static org.junit.Assert.assertEquals;

import java.util.Arrays;
import java.util.Collection;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

/***
 * 参数化测试的编写单元测试
 * 1. 为准备使用参数化测试的测试类指定特殊的运行器 org.junit.runners.Parameterized。
 * 2. 为测试类声明几个变量,分别用于存放期望值和测试所用数据。
 * 3. 为测试类声明一个使用注解 org.junit.runners.Parameterized.Parameters 修饰的,返回值为 java.util.Collection 的公共静态方法,并在此方法中初始化所有需要测试的参数对。
 * 4. 为测试类声明一个带有参数的公共构造函数,并在其中为第二个环节中声明的几个变量赋值。
 * 5. 编写测试方法,使用定义的变量作为参数进行测试。
 *
 * @author Administrator
 * @version 1.0, Feb 22, 2011 
 * Copyright 2010 Evergreen International Corp.
 */
@RunWith(Parameterized.class)
public class TestWordDealUtil2 {

	private String expected; 
    
    private String target; 
 
     @SuppressWarnings("unchecked")
	 @Parameters 
     public static Collection words(){ 
         return Arrays.asList(new Object[][]{ 
             {"employee_info", "employeeInfo"},      // 测试一般的处理情况
             {null, null},                           // 测试 null 时的处理情况
             {"", ""},                               // 测试空字符串时的处理情况
             {"employee_info", "EmployeeInfo"},      // 测试当首字母大写时的情况
             {"employee_info_a", "employeeInfoA"},   // 测试当尾字母为大写时的情况
             {"employee_a_info", "employeeAInfo"}    // 测试多个相连字母大写时的情况
         }); 
     } 
 
      /*** 
      * 参数化测试必须的构造函数
      * @param expected     期望的测试结果,对应参数集中的第一个参数
      * @param target       测试数据,对应参数集中的第二个参数
      */ 
     public TestWordDealUtil2(String expected , String target){ 
         this.expected = expected; 
         this.target = target; 
     } 
 
      /*** 
      * 测试将 Java 对象名称到数据库名称的转换
      */ 
     @Test public void wordFormat4DB(){ 
         assertEquals(expected, WordDealUtil.wordFormat4DB(target)); 
     } 
	 
}

 

分享到:
评论

相关推荐

    单元测试实施规程 软件单元测试

    1. **目的**:单元测试的主要目的是验证软件的各个模块(任务或单元)是否符合其设计规格,确保每个小部分都能够在独立运行时达到预期的效果。这有助于提升代码的可靠性和可维护性,同时也是后续集成测试和系统测试...

    Tessy单元测试提高软件质量

    单元测试是软件测试的基本组成部分,旨在检测和修复软件中的错误和缺陷。单元测试的重要性体现在以下几个方面: 1. 提高软件质量:单元测试可以检测软件中的错误和缺陷,从而提高软件的质量和可靠性。 2. 降低测试...

    软件单元测试报告.doc

    一、软件单元测试报告的组成部分 软件单元测试报告通常由以下几个部分组成: 1. 报告标题页:包括报告的标题、编制单位、审核人、批准人、发布日期等信息。 2. 文件更改控制记录:记录文件的变更历史,包括变更...

    单元测试说明模板

    单元测试是软件测试的基础,是软件开发过程中不可或缺的一部分。 单元测试的目的是为了确保软件的每个组件都能够正确地执行其功能,并且在集成时不会出现问题。单元测试可以帮助开发人员早期发现代码中的错误和缺陷...

    软件单元测试入门与实践,软件单元测试入门与实践 周立功,C,C++

    在软件开发过程中,单元测试是一项至关重要的质量保证活动,它能帮助开发者确保代码的正确性和稳定性。本资源“软件单元测试入门与实践”由周立功撰写,专注于C和C++编程语言,提供了对单元测试的基本理解及实际操作...

    .Net 单元测试案例

    单元测试允许开发者独立地测试代码的各个部分,确保每个功能模块都能按预期工作。本案例将深入探讨如何在.NET环境中进行单元测试,以及如何利用各种工具和框架来创建和执行这些测试。 首先,我们要理解单元测试的...

    Qt单元测试演示qt单元测试demo_基于qt5单元测试工程例子qt5单元测试例子

    //qt单元测试用法,qt测试例子,qt单元测试demo,qt单元测试简单例子,qt单元测试例程,qt单元测试简单例子, qt5单元测试例子,qt5单元测试代码,qt5单元测试工程例子,测试运行ok //首先,用标准的qt测试单元导向,...

    Android单元测试的小例子

    8. **Testing Best Practices**:编写单元测试时,遵循一些最佳实践很重要,比如“测试单一职责”(每个测试方法只测试一个功能)、“先写测试再写代码”(TDD,Test-Driven Development)以及保持测试可读性和可...

    单元测试

    3. 模块化:单元测试的目标是隔离测试,因此需要确保被测单元与系统其他部分解耦。这通常需要使用依赖注入(Dependency Injection)技术,使测试时可以替换掉真实的依赖,用模拟对象(Mock Object)或存根(Stub)来...

    有效的单元测试.md

    单元测试是一种软件开发技术,它通过自动化的测试用例来验证软件的各个组成部分(通常是函数或方法)是否按预期工作。单元测试的目标是确保每个代码单元都能独立正确地运行,并且能够与其他单元协同工作。 #### ...

    C++单元测试简单示例

    例如,如果你正在测试一个排序算法,你可以检查算法在处理特定输入时是否正确地改变了数组的顺序。 5. **运行测试**: 完成测试用例的编写后,可以通过主函数调用`RUN_ALL_TESTS()`来运行所有的测试。Google Test...

    白盒测试方法与单元测试

    当进行单元测试时,开发者或测试人员会编写小规模的测试用例,这些用例直接针对代码的特定部分进行,而白盒测试提供了一种方法来深入这些代码的内部,确保其逻辑正确性。 白盒测试的分类包括多种方法: 1. **代码...

    单元测试报告模板.doc

    《×××单元测试报告》是对软件开发过程中某一模块或组件进行独立验证的文档,它详细记录了单元测试的过程、结果以及可能遇到的问题。单元测试是软件开发中的关键环节,旨在确保代码的各个部分按预期工作,从而提高...

    JUnit单元测试原则 单元测试工具

    ### JUnit单元测试原则与工具详解 #### 一、单元测试概述 单元测试(Unit Testing)是一种软件测试方法,主要用于验证程序中的最小可测试单元(通常是单个函数或方法)是否按预期工作。对于Java这样的面向对象语言来...

    lua单元测试框架测试用例实例

    单元测试能够帮助开发者验证代码的各个独立部分(即“单元”)是否按照预期工作,从而在早期发现并修复错误。 Busted是一个流行的Lua单元测试框架,它提供了简洁的语法和丰富的功能,使得编写和运行测试用例变得...

Global site tag (gtag.js) - Google Analytics