【发布时间】:2018-04-09 06:40:36
【问题描述】:
这里我使用 Junit 和 Mockito 编写了一个简单的测试用例。
import org.jbehave.core.annotations.Given;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.*;
import com.test.dao.login.LoginDao;
import com.test.mapping.user.User;
import com.test.service.login.LoginService;
import com.test.service.login.impl.LoginServiceImpl;
import com.test.util.common.Common;
public class UserLoginSteps {
@Mock
Common common;
@Mock
LoginDao loginDao;
@InjectMocks
LoginService loginService =new LoginServiceImpl();
@BeforeClass
public static void beforeClass() {
System.out.println("@BeforeClass");
}
@Before
public void before() {
System.out.println("@Before");
MockitoAnnotations.initMocks(this);
}
@After
public void after() {
System.out.println("@After");
}
@AfterClass
public static void afterClass() {
System.out.println("@AfterClass");
}
@Given("$username username and $password password")
@Test
public void checkUser(String username, String password) throws Exception{
when(common.checkNullAndEmpty("admin")).thenReturn(true);
when(common.checkNullAndEmpty("password")).thenReturn(true);
when(loginDao.getUser("admin","password")).thenReturn(new User());
assertEquals(true,loginService.checkValidUser(username, password));
}
}
我已经在 before() 函数中初始化了 Mock 对象。 但是在运行测试用例时不会触发该功能。
我正在使用以下依赖项。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.8.9</version>
<scope>test</scope>
</dependency>
我已经看到与这种情况类似的问题。 但以下建议并不能解决问题。
是否有人可以描述它发生的原因以及如何解决此问题,这将非常有帮助。 提前致谢。
After-before-not-working-in-testcase
【问题讨论】:
标签: java unit-testing junit mockito