`
oolala
  • 浏览: 103222 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
09c341db-7f05-3f2b-a572-9ee69a5d8a77
unix环境高级编程
浏览量:22699
社区版块
存档分类
最新评论

持续集成中的单元测试

阅读更多

   最近在研究持续集成。使用maven、nexus、hudson架设了一套餐持续集成环境。项目确实可以作到自动或者定时的编译。 使用checstyle、pdm、findbug对代码进行静态代码分析。个人认为可以把静态分析工具集成到eclipse里面,这样可以在编码初期就发现一些bug。也可以把这些工具当成maven的插件,在编译的时候也作一些检查。

 

   可是现在的项目里面没有单元测试,这套持续集成环境就成了一套自动定时编译环境,根本没有给项目带来什么好处。只有单元测试,这样才能把质量得到提高。

  

   定义规范,编写高质量的代码。参考《代码整洁之道》。此书对提高团队整体质量意识很有帮助。  

 

   质量,质量意识的灌输。

 

   大家有对持续集成中单元测试是怎么作,多多发表意见。

 

   单元测试:junit Jmock

 

    自己写的一个jmock demo

   

import static org.junit.Assert.assertEquals;

import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.integration.junit4.JMock;
import org.jmock.integration.junit4.JUnit4Mockery;
import org.jmock.lib.legacy.ClassImposteriser;
import org.junit.Test;
import org.junit.runner.RunWith;

import com.sinovatech.mock.user.Foo;

@RunWith(JMock.class)
public class FooTest {
	
	/**
	 * 模拟接口时的写法为:
	 *Mockery context = new JUnit4Mockery(); 
	 */

	/**模拟类时的写法为:
	 * Mockery context = new JUnit4Mockery() {{    
	 *   setImposteriser(ClassImposteriser.INSTANCE);    
	 * }};   
	 */

	Mockery context = new JUnit4Mockery() {
		{
			setImposteriser(ClassImposteriser.INSTANCE);//默认实现的是对接口,这里要对类mock,所以加上这句
		}
	};
	
	@Test
	public void testFoo() {
		final Foo foo = context.mock(Foo.class);
		context.checking(new Expectations() {
			{
				one(foo).hello();
				will(returnValue("foo"));
			}
			/*可以定义多个块*/
			{
				one(foo).hello();
				will(returnValue("hello"));
			}
		});
		
		assertEquals("foo", foo.hello());
		assertEquals("hello", foo.hello());
		context.assertIsSatisfied();//如果没有使用mock,测试不通过
	}
	
	
	
}

 

 

分享到:
评论
1 楼 ngn9999 2010-10-08  
大多数持续集成工具都不带测试用例,所以这些必须手写,不仅仅是单元测试,通过持续集成完成集成测试,甚至系统测试,都是可行的。我们之前用Topo来做,就是写了大量的集成测试用例,但没有写单元测试用例。

相关推荐

    持续集成与单元测试xmzy.pdf

    持续集成与单元测试是现代软件开发中至关重要的两个实践。持续集成关注于通过频繁地集成代码到主分支上,从而及早发现并解决集成问题;而单元测试则强调编写和执行代码中最小可测试单元的测试代码,确保这些单元的...

    Flex持续集成之单元测试

    Flex持续集成之单元测试是开发过程中一个至关重要的环节,它主要关注的是Flex应用程序的模块化测试,确保每个独立的代码单元都能正常工作。通过单元测试,开发者可以预先发现和修复问题,提高代码质量和稳定性,同时...

    软件测试 单元测试 单元测试 集成测试

    单元测试和集成测试是软件测试中的两种主要类型,它们在软件生命周期中扮演着至关重要的角色。 单元测试(Unit Testing)是指对软件中的最小可测试单元进行检查和验证,通常是函数、方法或类。它的目标是确保每个...

    持续集成技术与单元测试方法

    持续集成技术与单元测试方法 内容包括以下: 持续集成技术 – 持续集成的基本概念 – 持续集成的作用和优点 – 如何实施持续集成 • 单元测试技术 – 单元测试基本方法 – 单元测试实践中常见的问题 – 单元...

    持续集成与自动化测试

    在一个大型Web项目中,测试人员将稳定的自动化脚本集成到持续集成中。当开发人员意外修改了一个已验证的功能时,自动化测试会立即执行并发现错误,从而及时防止问题进入生产环境。 **实际操作步骤** 1. 使用...

    持续集成环境下运行单元测试和代码校验详细过程

    本篇文章将详细介绍在持续集成环境中运行单元测试和代码校验的详细过程。 首先,我们需要搭建持续集成环境。这个环境通常包括以下几个关键组件: 1. **JDK**:Java Development Kit 是开发和运行 Java 应用的基础...

    智能运维:浅谈持续集成( CI)、持续交付(CD) 和软件测试.pdf

    智能运维中的持续集成(Continuous Integration, CI)、持续交付(Continuous Delivery, CD)以及软件测试是现代软件开发流程的关键组成部分,它们共同构成了DevOps文化的核心。CI/CD旨在加速软件开发周期,提高软件质量...

    java持续集成 持续集成

    3. **单元测试**:构建过程中,系统会运行单元测试以验证代码更改是否破坏了现有功能。测试覆盖率越高,发现问题的能力越强。 4. **静态代码分析**:CI工具可以执行静态代码分析,检查代码质量,如遵循编码规范、...

    软件单元测试讲义ppt

    3. 自动化:单元测试应自动化执行,便于集成到持续集成/持续部署(CI/CD)流程中。 4. 全覆盖:尽可能覆盖所有代码路径,包括边界条件和异常处理。 三、单元测试框架 在实践中,开发者常使用各种单元测试框架,如...

    迭代二单元测试和集成测试文档1

    总结来说,Gitmining软件的开发过程中,单元测试确保了单个组件的功能,而持续集成则帮助团队快速发现和修复集成过程中的问题。虽然没有进行传统的集成测试,但通过持续集成的方式,项目的各个模块在开发过程中得到...

    jenkins持续集成单元测试和findbugs问题解决方案

    jenkins 持续集成单元测试和 findbugs ...在本文中,我们讨论了如何使用 jenkins 实现持续集成单元测试和 findbugs 问题解决方案。使用 jenkins,我们可以自动化构建、测试和部署软件项目,提高开发效率和软件质量。

    微服务架构下的自动化测试和持续集成工具链

    - **持续集成的关键步骤**:文档中涉及了持续集成的一些基本步骤,比如合并分支时触发的Hook、CI服务等。 #### 总结 构建一个有效的自动化测试和持续集成工具链对于微服务架构的成功至关重要。这不仅需要选择合适...

    .Net 单元测试案例

    持续集成/持续部署(CI/CD)流程也可以集成单元测试,确保每次代码变更后,所有测试都能通过。 总结来说,.NET单元测试案例涉及到选择合适的测试框架、遵循最佳实践编写测试用例、使用mocking技术来隔离测试以及集成...

    Spring3单元测试和集成测试

    Mockito是一个流行的Java模拟框架,它可以在单元测试中替代真实的依赖,使测试更加隔离。在Spring3中,我们可以结合`@InjectMocks`和`@Mock`注解来创建被测试对象和模拟对象: ```java import org.junit.Test; ...

    单元集成系统验收

    4. **持续集成**:将单元测试集成到持续集成流程中,确保每次提交代码后都会自动运行测试。 5. **隔离测试**:通过模拟对象(如Mock、Stub)等方式,隔离外部依赖,专注于测试当前模块的功能。 ### 结论 单元集成...

    持续集成软件质量改进和风险降低之道.pdf

    《持续集成:软件质量改进和风险降低之道》一书深入探讨了如何在IT行业中通过持续集成来提升软件质量并有效管理风险。持续集成是敏捷开发方法的重要组成部分,它强调频繁地将开发人员的工作成果合并到主分支,以尽早...

Global site tag (gtag.js) - Google Analytics