英文:
JUnit Testing Android NullPointerException
问题
我的项目正在使用Firebase实时数据库作为其数据库存储。我使用MVC架构,具有存储库和服务层。我试图对服务层中的一个方法进行单元测试,该方法将新用户添加到数据库存储库中。
在下面的代码行上,我遇到了空指针异常,但我不知道为什么。有任何想法吗?
User testUser = svc.SaveUserProfile(u);
这是我的单元测试代码:
public class RegistrationActivityTest {
UserService svc;
@Test
public void testAddUserToDb_WhenNone_ShouldSetAllProperties(){
//act
User u = new User("1", "John", "john@email.com", "Teacher");
User testUser = svc.SaveUserProfile(u);
//assert - that testUser is not null
assertNotNull(testUser);
//now assert that the user properties were set correctly
assertEquals("1", testUser.getUserId());
assertEquals("John", testUser.getName());
assertEquals("john@email.com", testUser.getEmail());
assertEquals("Teacher", testUser.getAccount());
}
这是我的服务层和接口代码:
public class UserService implements IUserService {
//instance of DbContext for firebase handling
private DbContext dbContext;
public UserService(Context context){
super();
dbContext = new DbContext(context);
}
@Override
public User SaveUserProfile(User u) {
User user = new User();
user.setUserId(u.getUserId());
user.setName(u.getName());
user.setEmail(u.getEmail());
user.setAccount(u.getAccount());
dbContext.AddUserAccount(user);
return user;
}
接口:
public interface IUserService {
User SaveUserProfile(User u);
}
英文:
My project is using a Firebase Realtime Database as its DB storage. I am using MVC architecture with a repository and service layer. I'm trying to unit test a method in the service layer that adds a new user to the database repository.
I'm getting a null pointer exception on the line below and I don't know why. Any ideas?
User testUser = svc.SaveUserProfile(u);
Here is my unit test code:
public class RegistrationActivityTest {
UserService svc;
@Test
public void testAddUserToDb_WhenNone_ShouldSetAllProperties(){
//act
User u = new User("1", "John", "john@email.com", "Teacher");
User testUser = svc.SaveUserProfile(u);
//assert - that testUser is not null
assertNotNull(testUser);
//now assert that the user properties were set correctly
assertEquals("1", testUser.getUserId());
assertEquals("John", testUser.getName());
assertEquals("john@email.com", testUser.getEmail());
assertEquals("Teacher", testUser.getAccount());
}
Here is my service layer and interface code:
public class UserService implements IUserService {
//instance of DbContext for firebase handling
private DbContext dbContext;
public UserService(Context context){
super();
dbContext = new DbContext(context);
}
@Override
public User SaveUserProfile(User u) {
User user = new User();
user.setUserId(u.getUserId());
user.setName(u.getName());
user.setEmail(u.getEmail());
user.setAccount(u.getAccount());
dbContext.AddUserAccount(user);
return user;
}
Interface:
public interface IUserService {
User SaveUserProfile(User u);
}
答案1
得分: 1
你的 svc
对象尚未创建。在使用之前,请先创建它:
UserService svc = new UserService(context);
英文:
Your svc
is object not created. Create it before using:
UserService svc = new UserService(context)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论