java.lang.NullPointerException 的 Junit 测试失败

我努力用 来测试一门课,Junit我得到了一个NullPointerException.


下面提供了我想测试的课程,


@Component

public class EmailageConnector {


    private static final Logger LOG = LoggerFactory.getLogger( EmailageConnector.class );


    private static final String BASIC_AUTHORIZATION = "Basic ";


    @Autowired

    private EmailageConfigHolder emailageConfigHolder;


    @Autowired

    private EntityServiceConnectable<EmailageResponseDto> connector;


    private String authorization;


    @PostConstruct

    void createAuthorization() {

        final String credentials = String.format( "%s%s%s", emailageConfigHolder.getAccountId(), ":", emailageConfigHolder.getApiKey() );

        authorization = BASIC_AUTHORIZATION + encodeBase64String( credentials.getBytes() );

    }


    // ========================================================================


    public ServiceResponse<EmailageResponseDto> call( final RequestInformation requestInfo, final EmailageRequestDto request ) {


        if( LOG.isDebugEnabled() ) {

            LOG.debug( "call emailage [ requestInfo: {} - request: {}]",

                       String.format( "%s", requestInfo ),

                       String.format( "%s", request ) );

        }


        return connector.call( request, createHeaders() );

    }


    // ========================================================================


    private HttpHeaders createHeaders() {

        final HttpHeaders headers = new HttpHeaders();


        headers.add( AUTHORIZATION, authorization );

        return headers;

    }


}

这是我的测试课,


@RunWith( MockitoJUnitRunner.class )

public class EmailageConnectorTest {


    @InjectMocks

    private EmailageConnector connector;


    @Spy

    private EmailageConfigHolder configHolder;


    @Mock

    EntityServiceConnectable<EmailageResponseDto> serviceConnector;


    @Captor

    private ArgumentCaptor<UriParam<?>> captor;


    }


    

  

达令说
浏览 84回答 1
1回答

慕雪6442864

编辑:对于 JUnit5 和 mockito,请参考这个答案:How to use Mockito with JUnit5我也更新了下面的示例。Edit2:由于 TO 没有说明正在使用哪个 JUnit 版本或 mockito 版本,如果仍然不起作用,我将尝试编辑答案。感谢您@helospark指出这一点。使用 Runner 或 Rule 不适用于 JUnit5,因此可能应该使用 Mockito Version 2。使用 Mockito Version 1 时,需要显式调用 init 方法。@BeforeEach&nbsp; &nbsp; public void setUp() {&nbsp; &nbsp; &nbsp; &nbsp; MockitoAnnotations.initMocks(this);&nbsp; &nbsp; }对于 Junit5 和最新的 Mockito 版本 (2.27),测试类应该如下所示:class InnerClass {&nbsp; &nbsp; public void doSomething(String fileName) {&nbsp; &nbsp; }}class SomeClass {&nbsp; &nbsp; InnerClass innerClass;&nbsp; &nbsp; public boolean doSomething(String fileName) {&nbsp; &nbsp; &nbsp; &nbsp; innerClass.doSomething(fileName);&nbsp; &nbsp; &nbsp; &nbsp; return true;&nbsp; &nbsp; }}@ExtendWith(MockitoExtension.class)class SomeClassTest {&nbsp; &nbsp; @InjectMocks&nbsp; &nbsp; SomeClass someClass;&nbsp; &nbsp; @Mock&nbsp; &nbsp; InnerClass innerClass;&nbsp; &nbsp; @Test&nbsp; &nbsp; public void test() {&nbsp; &nbsp; &nbsp; &nbsp; someClass.doSomething("test");&nbsp; &nbsp; &nbsp; &nbsp; Mockito.verify(innerClass, Mockito.times(1)).doSomething(Mockito.any());&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java