Mockito - 测试NullPointer

时间:2015-10-20 12:11:52

标签: java unit-testing junit null mockito

所以可能是,我在Java中有一个基本的误解。让我们假设我有一个方法,它获取一个Object作为参数。它甚至是有意义的还是可以测试,当我传递null时会发生什么?:

     @Test(expected = NullPointerException.class)
        public void test_nullPointer() {
            doThrow(new NullPointerException()).when(myService).getSomeInformation(null);
            classUnderTest.doSomething(null);
            verify(myService).getSomeInformation(isNull(myObject.class));
        }

当然这不起作用。但这是我目前正在努力实现的,当然,这样做甚至是有意义的。

编辑:当我调用classUnderTest.doSomething(myObject obj)时,调用myService.getSomeInformation(myObject obj)。因此它将obj传递给myService以返回基于obj的内容。

问题是,我只想确保,如果任何其他类调用classUnderTest.doSomething(null),则抛出一个未捕获的NullPointerException。这是否是必要的问题,测试这种行为。如果是的话,如何实现它。

1 个答案:

答案 0 :(得分:0)

这有效(假设$rootScope.cart = {}; var democart= angular.copy($rootScope.cart); var cartCopy = democart; $rootScope.cart.test = 4; console.log('$rootScope.cart', $rootScope.cart); // { test: 4 } console.log('cartCopy', cartCopy); // {} console.log('democart', democart); // {} 是模拟的)......

someService

...但是如果你开始测试你的NPE,你应该首先处理它而不是简单地抛弃NPE(然后测试更好的行为)。

有意义吗?老实说,我对此表示怀疑。如果您没有足够的检查,NPE就会发生。我个人不认为NPE应该被抛出,只是因为我搞砸了其他检查而发生的事情。 (公共)方法开头的IllegalArgumentException可能比代码深处的NPE更好(并且至少更清晰)。