java 用于检查从私有方法返回的值的单元测试

sycxhyv7  于 2023-03-11  发布在  Java
关注(0)|答案(2)|浏览(186)

我在Java类中有这两个方法:

public CancelOrder generateCancelOrder(
  final CurrentState currentState,
  final Contract contract) {

    Context ctx = new Context();
    ctx.setVariable(
        ORDER_STATE_NOW, transformForTemplate(currentState, contract));

    PennyOrderDetails pennyCancelOrderDetails =
        pennyCancelOrderService.requestCancelOrder(ctx);

    return CancelOrderResponse.builder()
        .premiumSummary(pennyCancelOrderDetails.getOrderSummary())
        .build();
}

private QuoteMessageCurrentState transform(
  final CurrentState currentState, final Contract contract) {
return QuoteMessageCurrentState.builder()
    .fromRequest(messageTemplateChanges.change(currentState, contract))
    .extras(
        VoluntaryExtras.calculateVoluntaryExtrasAmount(currentState.getVoluntaryExtras()))
    .build();
}

extras是一个字符串值。是否有任何方法可以对它进行单元测试,以确认该值是什么,从而确保为它返回一个值,并且该值是正确的?
我知道私有方法不应该进行单元测试。我最近遇到了一个问题,行.extras(VoluntaryExtras.calculateVoluntaryExtrasAmount(currentState.getVoluntaryExtras()))丢失了,但直到下游应用程序检测到问题才被发现。我想在适当的位置放置一些东西,如果它被意外删除,它不会被忽视。

b09cbbtk

b09cbbtk1#

我最近遇到了一个问题,其中行.extras(VoluntaryExtras.calculateVoluntaryExtrasAmount(currentState.getVoluntaryExtras()))丢失,但直到下游应用程序检测到一个问题时才被拾取。我想放置一些东西,如果它被意外删除,它不会被忽视。
下游应用程序遇到的问题是什么?可能是某个外部状态(可能是返回的CancelOrder对象)受到了该行的添加或删除的影响。
换句话说:

@Test
public void generateCancelOrder() {
   // TODO: Get current state of the world before method is called
  
   CurrentState state = createDummyCurrentState();
   Contract contract = createDummyContract();
   CancelOrder order = generateCancelOrder(state, contract);
   
   // Assert expected state on state, contract, order, some other object, or any combination of all of the above
}
8i9zcol2

8i9zcol22#

正如@Slaw所正确建议的那样,私有方法不能进行单元测试。除了单元测试之外,还有一种方法可以进行验证。* 构造函数是验证发生的地方。即使你没有使用构建器模式,构造函数也负责确保对象在创建时处于有效状态。*
堆栈溢出线程Builder pattern validation - Effective Java中对此进行了详细说明

相关问题