为什么Arquillian没有更多的嘲笑?

问题描述 投票:1回答:1

如果你去Arquillian's home page它说:No more mocks.,但如果我有EJB 1注入EJB 2并且我想测试EJB 1,如果我不模拟它,我该如何模拟EJB 2? Arquillian用于集成而不是单元测试吗?为什么在Arquillian中嘲笑这是一种不好的做法?

java java-ee mockito ejb jboss-arquillian
1个回答
2
投票

Arquillian确实用于集成测试而不是单元测试。

正是出于这个原因,在Arquillian中广泛嘲笑是一种不好的做法。它在很大程度上违背了首先使用Arquillian的目的。

也就是说,在Arquillian中嘲笑你描述的情况相当容易。由于Arquillian中的默认模式是您提供使用shrinkwrap构建的微型存档,因此您可以在创建存档时使用模拟版本替换EJB2。

例如:

@RunWith(Arquillian.class)
public class MyTest {

    @Deployment
    public static Archive<?> deployment() {
        return ShrinkWrap.create(JavaArchive.class, "test.jar")
            .addClass(com.real.EJB1.class)
            .addClass(com.example.mock.EJB2.class)
        ;
    }

    // ..
}

由于EJB1不依赖于EJB2的实际类类型,而只依赖于其(简单)名称或接口,因此您可以在创建测试时将其交换掉。

© www.soinside.com 2019 - 2024. All rights reserved.