为什么我在模拟或注入对象时获得空值。?

时间:2016-03-28 11:06:06

标签: spring web-services unit-testing

当我尝试注入Dao界面时,我得到一个空值。 我在撰写测试用例时的代码示例。

@Mock
private ServiceUriLocator serviceLocator;   
@Mock
private SessionDao sessionDao;
ActiveSession session;
AccountData accountdata;
@InjectMocks
Account account

当我在像

这样的方法中使用时,以上代码
@Test
public void testActivate()
 {
  Response response=account.activate(accountdata).
 }

 private Accountdata accountdata(){
 accountdata.setFirstName("Employee_name");
 accountdata.LastName("Employee_Last_Name");
 return accountdata;
    }

在上面的代码帐户值为null,这就是为什么我得到空指针异常。 任何人都可以调整为什么我为注入模拟值获得空值。

1 个答案:

答案 0 :(得分:0)

使用模拟框架执行测试用例时有很多因素。

  1. 是否设置了Runner?你正在执行哪个跑步者? 它必须是MockitoJunitRunner,这有助于与Mocks一起运行
  2. when语句写在同一个模拟对象上? 这必须匹配相同的模拟对象
  3. 输入字符串/数据是否与when语句匹配? 这必须是相同的输入
  4.   

    当(service.execute( '喜'))thenReturn();

    不同
      

    当(service.execute( '你好'))thenReturn();

    1. when写在哪里? setup - @Before级别或测试方法级别?
    2. 所写的全局声明适用于所有测试方法,因此在when方法中制作@Before语句时要小心。

      这些是一些调试点。