相关疑难解决方法(0)

Mockito - 存根方法时的NullpointerException

所以我开始为Java-Spring项目编写测试.

我使用的是JUnit和Mockito.据说,当我使用when()... thenReturn()选项时,我可以模拟服务,而不需要模拟它们.所以我想做的是,设置:

when(classIwantToTest.object.get().methodWhichReturnsAList(input))thenReturn(ListcreatedInsideTheTestClass)  
Run Code Online (Sandbox Code Playgroud)

但无论我在哪个when子句中,我总是得到一个NullpointerException,当然这是有意义的,因为输入是null.

当我尝试从对象模拟另一个方法时:

when(object.method()).thenReturn(true)
Run Code Online (Sandbox Code Playgroud)

在那里我也得到一个Nullpointer,因为该方法需要一个未设置的变量.

但我想使用when().. thenReturn()来绕过创建这个变量等等.我只是想确保,如果任何类调用此方法,那么无论如何,只返回true或上面的列表.

这是我身边的一个基本误解,还是有其他错误?

码:

public class classIWantToTest implements classIWantToTestFacade{
        @Autowired
        private SomeService myService;

        @Override
        public Optional<OutputData> getInformations(final InputData inputData) {
            final Optional<OutputData> data = myService.getListWithData(inputData);
            if (data.isPresent()) {
                final List<ItemData> allData = data.get().getItemDatas();
                    //do something with the data and allData
                return data;
            }

            return Optional.absent();
        }   
}
Run Code Online (Sandbox Code Playgroud)

这是我的测试类:

public class Test {

    private InputData inputdata;

    private ClassUnderTest classUnderTest;

    final List<ItemData> allData = new ArrayList<ItemData>();

    @Mock
    private DeliveryItemData item1;

    @Mock
    private DeliveryItemData item2; …
Run Code Online (Sandbox Code Playgroud)

java testing junit mockito stubbing

49
推荐指数
11
解决办法
10万
查看次数

Scala Value类和Mockito Matchers不能一起玩

在Mockito Mocks(Matchers)中使用Scala的值类会导致NullPointerException,请参阅以下示例:

import org.scalatest.FunSuite
import org.scalatest.mock.MockitoSugar._
import org.mockito.{Matchers, Mockito}

class Id(val underlying: Int) extends AnyVal

class MockitoValueClassSuite extends FunSuite {

  trait Sample {
    def doIt(id: Id) : Int
  }

  test("Check value classes in scala with mockito") {
    val sampleMock = mock[Sample]

    val id = new Id(1)

    Mockito.when(sampleMock.doIt(Matchers.eq(id))).thenReturn(5)

    assert(sampleMock.doIt(id) == 5)
  }
}
Run Code Online (Sandbox Code Playgroud)

结果是:

java.lang.NullPointerException was thrown.
java.lang.NullPointerException
    at net.gutefrage.service.user.service.MockitoValueClassSuite$$anonfun$1.apply$mcV$sp(MockitoValueClassSuite.scala:21)
    at net.gutefrage.service.user.service.MockitoValueClassSuite$$anonfun$1.apply(MockitoValueClassSuite.scala:16)
    at net.gutefrage.service.user.service.MockitoValueClassSuite$$anonfun$1.apply(MockitoValueClassSuite.scala:16)
    at org.scalatest.Transformer$$anonfun$apply$1.apply(Transformer.scala:22)
Run Code Online (Sandbox Code Playgroud)

有什么提示可以在这做什么?

scala mockito

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

标签 统计

mockito ×2

java ×1

junit ×1

scala ×1

stubbing ×1

testing ×1