How do you Test Getter and Setter Interface in Java using Mockit

  • 时间:2020-09-08 11:08:55
  • 分类:网络文摘
  • 阅读:127 次

Usually, we unit tests the logics. An interface is without implementation details. A interface is just a binding a contract, but still, we can use Mockito to mock the interface, and test it.

For example, given the following simple Setter and Getter Interface:

1
2
3
4
interface GetAndSet {
    void setValue(String name);
    String getValue();
}
interface GetAndSet {
    void setValue(String name);
    String getValue();
}

We can test it like this – thanks to the Mockito mocking framework in Java. We use doAnswer method to intercept the invokation of a interface method i.e. setter, then at the time, we mock the getter.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.helloacm;
 
import lombok.val;
import org.junit.jupiter.api.Test;
 
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*;
 
interface GetAndSet {
    void setValue(String name);
    String getValue();
}
 
public class ExampleTest {
    @Test
    public void test_simple_getter_setter_interface() {
        val instance = mock(GetAndSet.class);
 
        doAnswer(invocation -> {
            // or use invocation.getArgument(0);
            val name = (String)invocation.getArguments()[0];
            when(instance.getValue()).thenReturn(name);
            return null;
        }).when(instance).setValue(anyString());
 
        instance.setValue("HelloACM.com");
        assertEquals("HelloACM.com", instance.getValue());
    }
}
package com.helloacm;

import lombok.val;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*;

interface GetAndSet {
    void setValue(String name);
    String getValue();
}

public class ExampleTest {
    @Test
    public void test_simple_getter_setter_interface() {
        val instance = mock(GetAndSet.class);

        doAnswer(invocation -> {
            // or use invocation.getArgument(0);
            val name = (String)invocation.getArguments()[0];
            when(instance.getValue()).thenReturn(name);
            return null;
        }).when(instance).setValue(anyString());

        instance.setValue("HelloACM.com");
        assertEquals("HelloACM.com", instance.getValue());
    }
}

If the method we are mocking is not void – we can use when. For example:

1
2
3
when(instance.getValue()).thenAnswer(innocation -> {
     return "Hello";
});
when(instance.getValue()).thenAnswer(innocation -> {
     return "Hello";
});

–EOF (The Ultimate Computing & Technology Blog) —

推荐阅读:
5 Cognitive Biases You Can Use to Boost E-Commerce Conversions  Important SEO Tips for E-commerce That You Cannot Disregard  5 Effective Ways to Improve Blog Conversion Rate  7 Reasons Blogging is Essential for Law Firms  Should Your Blog Extend Into Multimedia Forms of Content?  How Small Companies Can Use Big Data  Hands Up and Step Slowly Away from the Keyboard: Why Good Execut  How to Improve Bad Blog Posts  5 Things That Bloggers Use in Their Craft  How To Increase Your Ecommerce Sales Using Social Media 
评论列表
添加评论