Java - 委托类的单元测试用例

时间:2013-11-19 17:17:27

标签: java unit-testing

我有一个服务类MyBusinessService,有两个方法doABC()和doXYX()。方法doABC()将工作委托给ABCHandler.do(),方法doXYX()将工作委托给XYZHandler.do()。 MyBusinessService类方法只是将作品委托给相应的处理程序。

我在这里有一个问题。当我为此编写单元测试时,我必须为处理程序中的方法编写单元测试。我应该为MyBusinessService类方法编写UT吗?我问这个问题有两个原因。

一个。使用UT测试,不应在2个位置测试一个功能。我的实际逻辑是在处理程序类中,我不应该在处理程序类和服务类

中单元测试相同的逻辑

湾如果我不为MyBusinessService类方法编写单元测试,那么将来如果某些开发人员修复了一些bug并破坏了某些东西,那么它可能会导致应用程序在生产中失败。所以,我需要在这里进行测试。但是如果我为这个类编写测试用例,这将违反规则(a)。

请告诉我是否应该为委派类(MyBusinessService类)编写UT,或者我应该将其留给Integration测试用例来解决它。

1 个答案:

答案 0 :(得分:0)

单元测试必须只测试一个类。如果您测试多个类实例的交互,那么您正在进行集成测试。您应该考虑使用一些模拟库,如jmock或mockito,第一个适合我的用途。

如果你使用jmock,你可以这样做:

@Test
public void someTestMethod(){
 MyBusinessService instance = new MyBusinessService()

 Mockery context = new Mockery();
 ABCHandler mock1 = context.mock(ABCHandler.class); //creating a mock object

 instance.setABCHandler(mock1);

 context.checking(new Expectations(){{
  oneOf(mock1).do(); //creating a expectation wich expects exactly on call of method do.
 }});

 instance.doABC();

 context.assertIsSatisfied(); //check if the expectation is met

}