Java 模拟dao方法时的NullpointerException

Java 模拟dao方法时的NullpointerException,java,junit,mockito,jmockit,Java,Junit,Mockito,Jmockit,我开始为我的JavaSpring项目编写testclass。我使用JUnit和Mockito 但不管我怎么做,我总是得到一个NullpointerException,用于下面的语句 assert((dao.getAllBusinessRules(sourceSystemIdentifier)).size()>=0); 这是我的主要课程 Public class BusinessRulesDao extends SimpleDaoImpl‹BusinessRules>

我开始为我的JavaSpring项目编写testclass。我使用JUnit和Mockito 但不管我怎么做,我总是得到一个NullpointerException,用于下面的语句

assert((dao.getAllBusinessRules(sourceSystemIdentifier)).size()>=0);
这是我的主要课程


Public class   BusinessRulesDao   extends   SimpleDaoImpl‹BusinessRules>
{
static  f1naI    String   GET_BUSINESS_RULES=“se1ect className, fileName , sourceSystemldentifier from Business_Rules where sourceSystemIdentifier=?”;

public List<BusinessRules> getAllBusinessRules(String sourceSystemIdentifier) {
SQLParameter param = new SQLParameter(Types.VARCHAR, "sourcesystemldentifier", sourceSystemtIdentifier);
List<BusinessRules› list = null;
ArrayList<IDBParameter> params = new ArrayList<IDBParameter›();
params.add(param) ;
1ist = this.query(GET_BUSINESS_RULES, params);
return list;
}

公共类业务规则DAO扩展SimpleDaoImplèBusinessRules>
{
静态f1naI字符串GET_BUSINESS_RULES=“se1ect className,fileName,sourceSystemldentifier from BUSINESS_RULES,其中sourceSystemIdentifier=?”;
公共列表getAllBusinessRules(字符串sourceSystemIdentifier){
SQLParameter param=新的SQLParameter(Types.VARCHAR,“SourceSystemlIdentifier”,sourceSystemtIdentifier);

列表这是您的问题-
this.impl=new SimpleDaoImpl()
在你这么做之前,它是一个模拟的!我试着对此进行注释。但是测试不会进入主方法,测试后我可以看到零覆盖率。好吧,你是否尝试模拟这个类?如果这是你正在测试的类,那么你根本不应该模拟它。但是如果你正在测试与它交互的其他类,那么mock可能正是您所需要的。我只想测试BusinessRulesDao类,还需要获得100%的覆盖率。我尝试通过对此进行注释进行测试。impl=new SimpleDaoImpl();现在我在assert((dao.getAllBusinessRules(sourceSystemIdentifier)).size()>=0)中得到nullpointer异常这不是JMock这是你的问题-
this.impl=new SimpleDaoImpl()
在你这么做之前,它是一个模拟的!我试着对此进行注释。但是测试不会进入主方法,测试后我可以看到零覆盖率。好吧,你是否尝试模拟这个类?如果这是你正在测试的类,那么你根本不应该模拟它。但是如果你正在测试与它交互的其他类,那么mock可能正是您所需要的。我只想测试BusinessRulesDao类,还需要获得100%的覆盖率。我尝试通过对此进行注释进行测试。impl=new SimpleDaoImpl();现在我在assert((dao.getAllBusinessRules(sourceSystemIdentifier)).size()>=0)中得到nullpointer异常。这不是jmockit
public  class BusinessRulesDaoTest {
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}

BusinessRulesDao dao =Mockito.mock(BusinessRulesDao.class);
@Mock
BusinessRules rules;
SimpleDaoImpl<BusinessRules> impl=Mockito.mock(SimpleDaoImpl.class);

@Before
Public void setUp()
{
    this.rules=new BusinessRules();
    this.dao =new BusinessRulesDao();
    assert(this.dao!=null&&this.rules!=null);
}
@Test
Public void getAllBusinessRulesTest()
{
String sourceSystemIdentifier=”ssi”;
String sql=”sql”;
ArrayList<IDBParameter> params=new ArrayList<IDBParameter>();
List<BusinessRules> list = new ArrayList<>();
When(dao.getAllBusinessRules(anyString()).thenReturn(list);
When(impl.query(sql,params)).thenReturn(list);
list.add(rules);
assert((dao.getAllBusinessRules(sourceSystemIdentifier)).size()>=0);
}
}