加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何开始测试(jMock)

发布时间:2020-12-15 00:50:35 所属栏目:Java 来源:网络整理
导读:我正在努力学习如何编写测试.我也在学习 Java,有人告诉我应该学习/使用/练习jMock,我在网上发现了一些有助于某些扩展的文章: http://www.theserverside.com/news/1365050/Using-JMock-in-Test-Driven-Development http://jeantessier.com/SoftwareEngineeri
我正在努力学习如何编写测试.我也在学习 Java,有人告诉我应该学习/使用/练习jMock,我在网上发现了一些有助于某些扩展的文章:

http://www.theserverside.com/news/1365050/Using-JMock-in-Test-Driven-Development

http://jeantessier.com/SoftwareEngineering/Mocking.html#jMock

我发现的大多数文章都是关于测试驱动的开发,首先编写测试然后编写代码以使测试通过.我现在不是在寻找,我正在尝试使用jMock为现有代码编写测试.

official documentation对我来说至少是模糊的,对我来说太难了.有没有人有更好的方法来学习这个.好书/链接/教程对我很有帮助.谢谢

编辑 – 更具体的问题:

http://jeantessier.com/SoftwareEngineering/Mocking.html#jMock – 来自这篇文章

试过这个来模拟这个简单的类:

import java.util.Map;
    public class Cache {
        private Map<Integer,String> underlyingStorage;
        public Cache(Map<Integer,String> underlyingStorage) {
            this.underlyingStorage = underlyingStorage;
        }
        public String get(int key) {
            return underlyingStorage.get(key);
        }
        public void add(int key,String value) {
            underlyingStorage.put(key,value);
        }
        public void remove(int key) {
            underlyingStorage.remove(key);
        }
        public int size() {
            return underlyingStorage.size();
        }
        public void clear() {
            underlyingStorage.clear();
        }
    }

以下是我尝试创建测试/模拟的方法:

public class CacheTest extends TestCase {

    private Mockery context;
    private Map mockMap;
    private Cache cache;

    @Override
    @Before
    public void setUp() {
        context = new Mockery() {
            {
                setImposteriser(ClassImposteriser.INSTANCE);
            }
        };

        mockMap = context.mock(Map.class);
        cache = new Cache(mockMap);
    }

    public void testCache() {
        context.checking(new Expectations() {{
            atLeast(1).of(mockMap).size(); 
            will(returnValue(int.class));
        }});

    }
}

它通过测试,基本上什么也没做,我想要的是创建一个地图并检查它的大小,你知道工作一些变化尝试抓住这个.通过实例了解更好,我在这里测试的其他内容或任何其他练习对我有很大的帮助. TNX

解决方法

这是一个关于使用JUnit和EasyMock的教程(我个人觉得比JMock更容易使用的模拟库): http://www.michaelminella.com/testing/unit-testing-with-junit-and-easymock.html

即使您100%致力于使用JMock,两者之间的概念也是相同的,这可以帮助您更好地理解它们.

模拟的目的是当你测试依赖于B和C的A类时,你对A的测试使用B和C的模拟版本来指定它们的确切行为,而不是使用你的B和C的真实实现. A的测试.否则你不是只测试A的单个单元,你也隐含地测试B和C.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读