Java 如何编写createNewToken方法的测试方法?
我是这个Mockito J单元测试的新手,我想测试我的Java 如何编写createNewToken方法的测试方法?,java,unit-testing,junit,mockito,Java,Unit Testing,Junit,Mockito,我是这个Mockito J单元测试的新手,我想测试我的createNewToken()-方法,但我不能理解它的逻辑 这是我的方法: public String createNewToken(String usertoken) { WebToken oldToken = getTokenByUserToken(usertoken); if (!Assert.isNull(oldToken)) { em.remove(oldToken); } WebT
createNewToken()
-方法,但我不能理解它的逻辑
这是我的方法:
public String createNewToken(String usertoken) {
WebToken oldToken = getTokenByUserToken(usertoken);
if (!Assert.isNull(oldToken)) {
em.remove(oldToken);
}
WebToken webToken = new WebToken();
webToken.setToken(UUID.randomUUID().toString());
webToken.setUserToken(usertoken);
em.persist(webToken);
return webToken.getToken();
}
这是我的测试方法,但我确信它是错误的:
@RunWith(Enclosed.class)
public class WebTokenPSTest extends AbstractPersistenceTest {
@InjectMocks
WebTokenPS cut;
@RunWith(MockitoJUnitRunner.class)
public static class createNewToken extends WebTokenPSTest {
@Test
public void happyPath() {
String token = cut.createNewToken("token");
String result = token;
assertThat(result).isEqualTo(token);
}
}
}
t如我所见,您的方法的主要部分与Hibernate EntityManager一起工作。所以你应该测试这个部分,或者如果可能的话模拟它 还可以模拟getTokenByUserToken(userToket)。在这里你可以写几个案例 因此,可能的测试用例:
- getTokenByUserToken(usertoken)返回null。因此,您的方法将创建新令牌并将令牌持久化到DB。断言
。在这里,您可以验证新令牌是否持久存在于数据库中em.createQuery(“选择标记t…”)
- getTokenByUserToken(usertoken)返回未在DB令牌中持久化。在这里,当EntityManager尝试删除此令牌时,您可能会遇到异常。这是一个很好的方法,可以发现代码中没有正确处理某些异常情况
- getTokenByUserToken(usertoken)返回现有令牌(例如,您可以在测试之前将其插入DB)。在这里,您将测试现有令牌的删除和新令牌的创建