Java JUnit测试Android NullPointerException
我的项目使用Firebase实时数据库作为数据库存储。我正在使用带有存储库和服务层的MVC体系结构。我正在尝试在服务层中对一个方法进行单元测试,该方法将新用户添加到数据库存储库中 我在下面的一行得到一个空指针异常,我不知道为什么。有什么想法吗Java JUnit测试Android NullPointerException,java,android,unit-testing,firebase-realtime-database,nullpointerexception,Java,Android,Unit Testing,Firebase Realtime Database,Nullpointerexception,我的项目使用Firebase实时数据库作为数据库存储。我正在使用带有存储库和服务层的MVC体系结构。我正在尝试在服务层中对一个方法进行单元测试,该方法将新用户添加到数据库存储库中 我在下面的一行得到一个空指针异常,我不知道为什么。有什么想法吗 User testUser = svc.SaveUserProfile(u); 以下是我的单元测试代码: public class RegistrationActivityTest { UserService svc; @Test public vo
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);
}
您的
svc
对象未创建。在使用之前创建它:
UserService svc=new UserService(context)
我将其更改为使用UserService接口(IUserService),并按照您所说的方式创建了它,它通过了,谢谢!