Java 使用JUnit重新初始化局部变量

Java 使用JUnit重新初始化局部变量,java,junit,Java,Junit,我正在为一个方法编写一个JUnit,我需要重新初始化ServiceContext,以获得该行的完整分支覆盖率。我不知道如何访问ServiceContext对象,因为每次ctx为null时,它都会向其中添加消息。是否有任何方法可以显式地访问它,以便按照我想要的方式对其进行调优 试验方法: public AgencyResponse getAgency(@QueryParam(ServiceConstants.AGENCY_CODE) String agencyCode, @Quer

我正在为一个方法编写一个
JUnit
,我需要重新初始化
ServiceContext
,以获得该行的完整分支覆盖率。我不知道如何访问
ServiceContext对象
,因为每次ctx为
null
时,它都会向其中添加消息。是否有任何方法可以显式地访问它,以便按照我想要的方式对其进行调优

试验方法:

public AgencyResponse getAgency(@QueryParam(ServiceConstants.AGENCY_CODE) String agencyCode,
        @QueryParam(ServiceConstants.EFFECTIVE_DATE) long effectiveDate) throws WebServiceException {
    ServiceContext ctx = getServiceContext();
    getBaseComponent().logMethodStartDebug(ctx, CLASS_NAME, "getAgency()" ); 

    AgencyResponse response = new AgencyResponse();

    try {
        if( effectiveDate < 1 ) {           
            effectiveDate = new Date().getTime();
        }

        ctx.addParameter( ServiceConstants.AGENCY_CODE, agencyCode );
        ctx.addParameter( ServiceConstants.EFFECTIVE_DATE, DateUtil.convertToDate( effectiveDate, false ) );

        validateRequest( ctx, response );

        IProviderChain providerChain = (IProviderChain)AppContext.getBean( ServiceConstants.AGENCY_PROVIDER_CHAIN );
        response = (AgencyResponse)providerChain.retrieveData( ctx );

        if( response == null ) { //precaution
            response = new AgencyResponse();
        }

        if( response.getAgency() == null ) {
            if(ctx.getMessages()==null || ctx.getMessages().isEmpty()){
                ctx.addMessage( ErrorMessageUtil.generateMessage( getBaseComponent().getMessageFactory(), ErrorCodeConstants.STATUS_2000 ) );
            }
        }

        return (AgencyResponse)finalizeResponse( response, ctx );
}
公共代理响应getAgency(@QueryParam(serviceContents.AGENCY_code)字符串代理代码, @QueryParam(ServiceConstants.EFFECTIVE_DATE)long effectiveDate)引发WebServiceException{ ServiceContext ctx=getServiceContext(); getBaseComponent().logMethodStartDebug(ctx,类名,“getAgency()”); AgencyResponse=新的AgencyResponse(); 试一试{ 如果(生效日期<1){ effectiveDate=新日期().getTime(); } ctx.addParameter(ServiceConstants.AGENCY_代码,agencyCode); ctx.addParameter(ServiceConstants.EFFECTIVE_DATE,DateUtil.convertToDate(effectiveDate,false)); 验证请求(ctx,响应); IProviderChain providerChain=(IProviderChain)AppContext.getBean(ServiceConstants.AGENCY_PROVIDER_CHAIN); 响应=(AgencyResponse)providerChain.retrieveData(ctx); 如果(响应==null){// response=新代理响应(); } if(response.getAgency()==null){ if(ctx.getMessages()==null | | ctx.getMessages().isEmpty()){ addMessage(ErrorMessageUtil.generateMessage(getBaseComponent().getMessageFactory(),ErrorCodeConstants.STATUS_2000)); } } 返回(代理响应)最终响应(响应,ctx); }
谢谢

例如,您想调优什么?org.omg.IOP.ServiceContext?您不能模拟getServiceContext()方法,以便在第二次测试中返回null吗?如果ctx.getMessages()然后ctx将消息添加到其中。对于该特定行,我希望获得100%的分支覆盖率。我可以使用反射将ctx初始化为我想要的任何内容,但当我调试代码并使用此方法时,ctx将变为null,并在下一行将消息添加到其中。我不想使用任何模拟框架,只是想知道我是否可以n使用核心java实现这一点。