我总是想知道我应该测试我的代码的多少(单元测试)。我应该单元测试我的代码多少钱
比方说,我有这个组件:
@Stateless
public class UserManager {
@PersistenceContext
EntityManager entityManager;
@Inject
Event<UserEvent> event;
public User getUserByUsername(String username) {
User user = entityManager
.createQuery("SELECT u FROM User u WHERE u.username = :username", User.class)
.setParameter("username", username)
.getSingleResult();
event.fire(new UserEvent("some message"));
return user;
}
}
要真正彻底地测试它,我应该嘲笑事件和EntityManager的。 那我应该怎么做?
- 验证entityManager上的createQuery方法只在给定的JPQL语句中调用一次。
- 验证setParameter方法是否与给定参数一起被调用一次。
- 确认方法getSingleResult只被调用一次。
- 验证事件是否与给定参数一起被触发。
- 测试是否返回了正确的用户。
全部?在我看来,这是非常有侵略性的,因为在我的测试中需要完成的变化中的每个小改动都会导致变化。
我有两个有点不同的问题,我认为是相关的。
Q2:在的Arquillian webiste,你可以看到这一点:
的Arquillian咱们你沟嘲笑和编写真正测试。
是否意味着我不应该使用模拟对象?怎么能(用arquillian)我真的彻底测试我的代码呢?
问题3:根据TDD,您应该先编写测试,然后再编写测试。但是如果你没有实现或api,你想怎么做,所以测试不会编译?