2

私は testNg と Mockito を使用してユニットケースを書いています。私が直面している問題は、以下の方法にあります。

public void publishRequest(final NotificationRequest request){

    MessageCreator messageCreator = new MessageCreator() {

        @Override
        public Message createMessage(Session session) throws JMSException {
            if (logger.isDebugEnabled()) {
                logger.debug("Start of MessagePublisher publishRequest");
            }
            ObjectMessage msg = session.createObjectMessage();

            msg.setStringProperty(
                    "SELECTOR",
                    request.getAvailaibilityTier() + "-"
                            + request.getEsbReference());

            if (logger.isDebugEnabled()) {
            logger.debug("Message Selector=>"+msg.getStringProperty("SELECTOR"));
            }

            msg.setStringProperty(NotificationConstants.CACHE_KEY.name(),
                    request.getId());

            msg.setObject(request.getData());
            if (logger.isDebugEnabled()) {
                logger.debug("Publishing request -->" + request);
            }

            if (logger.isDebugEnabled()) {
                logger.debug("End of MessagePublisher publishRequest");
            }
            return msg;
        }
    };
    producerTemplate.send(messageCreator);
}

ユニット ケースの作成中に、テスト ケースが MessageCreater オブジェクトを作成しても createMessage() メソッドが呼び出されません。より良いカバレッジを得るために、ユニットケースにも含めたいと思います。内部クラスのメソッドをテストする方法はありますか?

4

2 に答える 2

1

匿名クラスの動作をテストする必要があると感じた場合は、publishRequest メソッドの外に移動し、publishRequest メソッドを含むクラスの最上位クラスまたは静的クラスにします。

于 2013-04-10T05:08:23.203 に答える