`
zbg1983
  • 浏览: 39185 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jmock2:getting started with junit4

阅读更多
最近想玩玩JMock。
对着官方文档,想开始写个test case,不过让我郁闷的是官方文档上给的实例代码不完全。算了,自己写个跑跑看了。
1.测试接口:
IHelloService:
1 public interface IHelloService {
2
3     /**
4      * @param name
5      * @return hello message
6      */
7     String sayHelloToSomebody(String name);
8
9 }IMPL:
1 public class HelloServiceImpl implements IHelloService {
2
3     /*
4      * (non-Javadoc)
5      *
6      * @see org.hook.jmock.firstcase.HelloService#sayHelloToSomebody(java.lang.String,
7      *      java.lang.String)
8      */
9     public String sayHelloToSomebody(String name) {
10         return "HELLO," + name + "!";
11     }
12
13 }Test Case:
1 public class IHelloServiceTest extends TestCase {
2     private Mockery context = new JUnit4Mockery();
3     private IHelloService helloService;
4
5     /**
6      * @throws java.lang.Exception
7      */
8     @Before
9     public void setUp() throws Exception {
10         // set up
11         helloService = context.mock(IHelloService.class);
12     }
13
14     /**
15      * Test method for
16      * {@link org.hook.jmock.firstcase.HelloServiceImpl#sayHelloToSomebody(java.lang.String)}.
17      */
18     @Test
19     public void testSayHelloToSomebody() {
20         final String message = "HELLO,alex!";
21         final String name = "alex";
22         // expectations
23         context.checking(new Expectations() {
24             {
25                 one(helloService).sayHelloToSomebody(name);
26                 will(returnValue(message));
27             }
28         });
29         // execute
30         String result = helloService.sayHelloToSomebody(name);
31         // verify
32         context.assertIsSatisfied();
33         assertSame(result, message);
34     }
35 }OK,跑下测试,green bar...
2.测试类:
HelloService:
1 public class HelloService {
2
3     /**
4      * @param name
5      * @return hello message
6      */
7     public String sayHelloToSomebody(String name) {
8         return "HELLO," + name + "!";
9     }
10 }Test Case:
1 public class HelloServiceTest extends TestCase {
2     private Mockery context;
3     private HelloService helloService;
4
5     /**
6      * @throws java.lang.Exception
7      */
8     @Before
9     public void setUp() throws Exception {
10         context = new JUnit4Mockery();
11         // 声明针对类进行mock,针对接口则会采用动态代理,不需要声明
12         context.setImposteriser(ClassImposteriser.INSTANCE);
13         helloService = context.mock(HelloService.class);
14     }
15
16     /**
17      * Test method for
18      * {@link org.hook.jmock.firstcase.HelloService#sayHelloToSomebody(java.lang.String)}.
19      */
20     @Test
21     public void testSayHelloToSomebody() {
22         final String message = "HELLO,vivian!";
23         final String name = "vivian";
24         // expectations
25         context.checking(new Expectations() {
26             {
27                 one(helloService).sayHelloToSomebody(name);
28                 will(returnValue(message));
29             }
30         });
31         // execute
32         String result = helloService.sayHelloToSomebody(name);
33         // verify
34         context.assertIsSatisfied();
35         assertSame(result, message);
36     }
37 }
分享到:
评论

相关推荐

    JMOCK 2.6.0-RC2

    jMock 2: Java 5 and above. Stable: 2.5.1 Binary JARs (includes the source to let IDEs provide context-sensitive help) Javadocs Unstable: 2.6.0-RC2 Binary JARs (includes the source to let IDEs ...

    jmock-2.5.1-javadoc

    jMock与jUnit的集成非常紧密,通常我们会在jUnit测试类中使用jMock来模拟对象。以下是一个简单的示例: ```java import static org.jmock.Expectations.*; import org.junit.Test; import org.jmock.Mockery; ...

    JMOCK使用文档

    2. **JMock的核心概念** - **Expectations(期望)**:在测试中定义模拟对象的行为,指定何时以及如何响应方法调用。 - **Matchers(匹配器)**:用于指定方法参数的预期值,如`anyInt()`表示任何整数。 - **...

    jmock2.5.1.zip

    通过这个文档,开发者可以学习如何创建和配置模拟对象,设置和验证期待,以及如何在JUnit等测试框架中集成jMock。 首先,创建模拟对象通常需要使用`Mockery`类,这是jMock的核心类。开发者可以通过`context.mock...

    JMock

    <artifactId>jmock-junit4 <version>2.8.4 <scope>test ``` 同时,由于JMock与JUnit紧密集成,还需要包含JUnit的依赖。 ### 基本使用 在JMock中,模拟对象通过`mock(Class<T> clazz)`方法创建,然后可以使用`...

    jmock2.5.1和easymock3.0

    4. **组合使用与JUnit**:JMock可以很好地与JUnit等测试框架集成,方便编写和运行测试。 **EasyMock 3.0** EasyMock是另一个流行的模拟框架,它的设计目标是使单元测试变得更加简单。EasyMock 3.0版本引入了一些...

    Jmock2.6 jar包

    Jmock是一款开源的Java库,它基于JUnit构建,专门设计用来创建和验证对象交互。Jmock2.6是该库的一个版本,它包含了对Java 5及更高版本的支持,提供了一种声明式的方式来定义和验证对象间的交互行为。通过Jmock,你...

    jmock-2.6.0-jars

    - `jmock-junit4-2.6.0.jar`: 这个版本支持JUnit 4,可以方便地与JUnit测试一起使用。 - `jmock-2.6.0-sources.jar`: 这包含源代码,对于理解`jmock`的工作原理和自定义扩展非常有用。 ### 6. 使用jmock进行单元...

    jmock cookbook 资源整合

    6. **与JUnit和其他测试框架集成**:JMock可以无缝集成到JUnit、TestNG等流行的测试框架中,使得测试代码更加简洁和整洁。 7. **面向切面编程(AOP)**:JMock基于Java代理和动态代理实现,这使得它具备面向切面编程...

    JMOCK-2.6.0

    "JMOCK-2.6.0"是一个专门用于项目测试的工具,它能够与JUNIT等单元测试框架完美结合,为开发者提供更加全面和深入的测试支持。 JMOCK的核心功能在于模拟对象的行为,这在进行单元测试时尤其重要。它允许开发者创建...

    jmock-1.2.0-jars.zip

    2. **定义行为**:通过`expect`方法来设定模拟对象的预期行为,如`context.checking(new Expectations() { { oneOf(mock).myMethod(with(any(String.class))); } });` 3. **执行测试**:在测试代码中使用模拟对象,...

    jmock-1.2.0-jars.rar

    在 JUnit 中,你可以使用 `jmock-junit3` 或 `jmock-junit4` 包,它们提供了一个 JUnit Rule,使得在测试类中使用 JMock 更加方便。 6. **版本信息** 这个压缩包中的 "jmock-1.2.0-jars" 提供的是 JMock 1.2.0 ...

    JMOCK 帮助 网页 文档

    JMock可以与其他单元测试框架如JUnit、TestNG等无缝集成,提供更加全面的测试支持。它也可以与Mockito、PowerMock等其他模拟库一起使用,以应对更复杂的测试需求。 总结来说,JMock是一个强大且灵活的Java模拟工具...

    JMock JARs+docs

    2. **JMock 文档**: `jmock-2.5.1-javadoc.zip` 文件提供了JMock的API文档,程序员可以通过查看这份文档了解如何使用JMock的各种类、方法和接口。Javadoc是一种标准格式,它将源代码中的注释转换为易于阅读的HTML...

    jmock-2.6.0-RC2-jars.rar

    4. **验证行为**:在测试结束时,jMock会自动验证模拟对象的所有调用是否符合预设的期望。 jMock 2.6.0-RC2还引入了对Java 8的支持,包括Lambda表达式和新的日期时间API,使得在模拟这些新特性时更加方便。同时,这...

    jmock-2.4.0-jars.zip

    3. **集成测试框架**:jMock 2.4.0更好地支持了JUnit、TestNG等流行的测试框架,让测试集成更为顺畅。 四、使用jMock进行单元测试 1. **创建模拟对象**:使用jMock的`Mockery`类创建模拟对象,并指定需要模拟的...

Global site tag (gtag.js) - Google Analytics