小编Bal*_*ala的帖子

IoC - 多个实现支持单个接口

我想知道为什么.Net IoC容器不能轻易支持单个接口的多个实现!可能是我错了,但就我所见,像Ninject这样的框架部分支持使用注释这个功能(如何?).我不认为像Windsor或简单注入器这样的其他框架有一个简单的机制来支持这种情况.

是否有任何理由不支持许多框架?AFAIK,使用接口的最重要原因之一是实现松散耦合.如果框架旨在改善松散耦合,不能流利地支持单个接口的多个实现,我不明白为什么!

PS当然我理解在运行时会出现解决问题,容器会混淆选择哪种实现,但这是设计中必须考虑的事情,对吧?

c# castle-windsor ioc-container inversion-of-control

17
推荐指数
4
解决办法
1万
查看次数

模拟基于反射的调用

我试图模拟一些基于反射的方法.在下面你可以看到细节,

被测试的班级

public class TracerLog {
    @AroundInvoke
    public Object logCall(InvocationContext context) throws Exception {
        Logger logger = new Logger();
        String message = "INFO: Invoking method - " 
                + context.getMethod().getName() + "() of Class - " 
                + context.getMethod().getDeclaringClass();

        logger.write(message);
        return context.proceed();
    }
}
Run Code Online (Sandbox Code Playgroud)

测试

public class TracerLogTest {

@Mock
InvocationContext mockContext;
@Mock
Logger mockLogger;
@InjectMocks
private TracerLog cut = new TracerLog();

@BeforeMethod
public void setup() {
    MockitoAnnotations.initMocks(this);
}

@Test
public void logCallTest() throws Exception {
    when(mockContext.proceed()).thenReturn(true);
    when(mockContext.getMethod().getDeclaringClass().getName()).thenReturn("someClass");
    cut.logCall(mockContext);
    verify(mockContext).proceed();
}
Run Code Online (Sandbox Code Playgroud)

} …

java mocking mockito ejb-3.0

12
推荐指数
1
解决办法
2万
查看次数

单元测试EJB 3.1

我正在对EJB 3.1的单元测试进行一项小型研究.最后,我的目标是为单元测试EJB 3.1生成一个易于使用的解决方案.

  1. 我对大型EJB实现没有太多的了解,因此我想首先让一些经验丰富的人(你)只关注单元测试EJB中的难点.
  2. 通过我已经完成的初步研究,我可以理解使用模拟框架进行单元测试而不是使用嵌入式容器的优势.虽然两者都很好,但在单元测试方面,模拟框架略高一些.嵌入式容器非常好,并且各有优势,但可能是单元测试的不同阶段.我仍然认为,至少在使用可以改进的框架的某些情况下应该存在一些不足之处.

我希望我能为单元测试EJB做一个完整的解决方案,一旦完成,我就可以在这个论坛上分享.

感谢您的支持.

unit-testing mockito openejb ejb-3.0 ejb-3.1

7
推荐指数
2
解决办法
9676
查看次数

用于JPA或Hibernate的测试数据生成器

是否有任何工具或库可用于使用JPA或实体bean生成测试数据?我相信这对于单元测试非常有用,在单元测试中,我们可以拥有一个内存数据库,并在开始测试时就动态生成数据。因此,将不会与实际的数据库服务器进行通信,也不会浪费任何时间。

我只能找到JPAMock。但是它仍在开发中。如果有人可以提供良好的指示,那将是很好的。

非常感谢。

unit-testing hibernate stub-data-generation data-generation jpa-2.0

5
推荐指数
1
解决办法
5590
查看次数

EasyMock和Unitils相当于Mockito @ InjectMocks

EasyMock或Unitils Mock(非Unitils支持的EasyMock)中是否有任何技术可以将模拟直接注入到被测试类中?

例如.在Mockito中,可以将mocks直接注入类的成员变量中,

public class TimeTrackerTest {
    @InjectMocks   // Used to create an instance the CUT
    private TimeTrackerBean cut;
    @Mock  // Used to create a Mock instance
    EntityManager em;
    @Before
    public void injectMockEntityManager() {
        MockitoAnnotations.initMocks(this);   // Injects Mocks into CUT
    }
    @Test
    ...
}
Run Code Online (Sandbox Code Playgroud)

这样的事情可以用EasyMock或Unitils Mock完成吗?在easymock中,我们需要在CUT中使用单独的setter方法来支持测试中的注入.我是对的还是方向注射在某种程度上是可能的?

-谢谢

java easymock mocking mockito unitils

5
推荐指数
2
解决办法
5053
查看次数

嵌入式EJB容器与实际服务器容器之间有什么区别

嵌入式EJB容器与生产中使用的实际服务器容器之间的明显区别是什么。

我可以找到2个sceanrios。

  1. 例如。glassfish-embedded-static-shell.jar-没有任何实现,并且取决于glassfish服务器的本地安装。
  2. 像OpenEJB一样-只需将jar添加到类路径中,而无需进行安装。

AFAIK,两者都称为嵌入式容器。那么,它的真正含义是什么?

另外,嵌入式容器是否具有EJB规范支持的所有功能?

openejb ejb-3.0 ejb-3.1

2
推荐指数
1
解决办法
1101
查看次数

带有 PowerMock 的 TestNG DataProvider

我正在使用 Mockito 和 TestNG 进行单元测试。我有静态方法可以模拟,我尝试了 PowerMock。不幸的是,我无法在 TestNG 中将 DataProvider 与 PowerMock 一起使用。

问题:在使用 PowerMock 时,是否有任何解决方法可以使用 TestNG 的 DataProvider?

testng unit-testing mocking powermock

1
推荐指数
1
解决办法
1760
查看次数