So, this is my first test case made with AndroidStudio, but Im getting a NullPointerException and I think is from the presenter, but the thing that I dont really know is why, because Im instantiating it accordingly how I instantiate it in my view but with the injected mock.
So my test case is simple, it justs needs to test a certain email to be true or not.
class RegisterPresenterTest {
@Mock
lateinit var view: RegisterContract.View
@Mock
lateinit var interactor: RegisterInteractor
lateinit var presenter: RegisterPresenter
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
presenter = RegisterPresenter(interactor)
presenter.attachView(view)
}
@Test
fun test_Email_Should_Pass(){
assertTrue(presenter.isEmailValid("asgas@gmail.com"))
}
}
Presenter
class RegisterPresenter(registerInteractor: RegisterInteractor) : RegisterContract.Presenter {
var view: RegisterContract.View? = null
var registerInteractor: RegisterInteractor? = null
init {
this.registerInteractor = registerInteractor
}
override fun attachView(view: RegisterContract.View) {
this.view = view
}
override fun isEmailValid(email: String): Boolean {
return Patterns.EMAIL_ADDRESS.matcher(email).matches()
}
My RegisterContract.View is just the interface that implements the method in my view.
My RegisterContract.Presenter is the interface that implements isEmailValid() method
Now, the error I'm facing when runing the test case test_Email_Should_Pass
is this
java.lang.NullPointerException at com.yawp.presentation.register.presenter.RegisterPresenter.isEmailValid(RegisterPresenter.kt:38) at com.yawp.RegisterPresenterTest.test_Email_Should_Pass(RegisterPresenterTest.kt:40) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
And I'm confused why I'm having this problem.
Aucun commentaire:
Enregistrer un commentaire