如何在 JMockit 中将模拟属性设置为 @Before 方法上的测试对象?
How to set in JMockit mocked properties to tested object on @Before method?
在 JMockit 测试中,我有以下代码:
@Tested
private PromotionsAddOrUpdateEntryStrategy strategy;
@Mocked
private BuyXGetYPromoPreAddOrUpdateEntryCommand precommand;
@Before
public void setUp()
{
initializeCommands(precommand);
}
protected void initializeCommands(final BuyXGetYPromoPreAddOrUpdateEntryCommand command)
{
final List<AddOrUpdateEntryCommand> commands = new ArrayList<>();
commands.add(command);
strategy.setPrecommands(commands);
}
执行测试时,我在strategy
对象中得到一个NullPointerException
。为什么会这样?正确的方法是什么?这个想法是为了避免在所有测试中重复使用 initializeCommands
方法。
您可以配置 @Tested
字段,以便在任何 @Before
方法运行之前对其进行初始化:
@Tested(availableDuringSetup = true)
private PromotionsAddOrUpdateEntryStrategy strategy;
有关详细信息,请参阅 API documentation。
不过,有一个更简单的解决方案,因为最近添加了对 @Injectable
注入 List
的支持(版本 1.28)。
因此,以下应该可以工作,不需要 @Before
方法:
@Tested PromotionsAddOrUpdateEntryStrategy strategy;
@Injectable AddOrUpdateEntryCommand precommand;
在 JMockit 测试中,我有以下代码:
@Tested
private PromotionsAddOrUpdateEntryStrategy strategy;
@Mocked
private BuyXGetYPromoPreAddOrUpdateEntryCommand precommand;
@Before
public void setUp()
{
initializeCommands(precommand);
}
protected void initializeCommands(final BuyXGetYPromoPreAddOrUpdateEntryCommand command)
{
final List<AddOrUpdateEntryCommand> commands = new ArrayList<>();
commands.add(command);
strategy.setPrecommands(commands);
}
执行测试时,我在strategy
对象中得到一个NullPointerException
。为什么会这样?正确的方法是什么?这个想法是为了避免在所有测试中重复使用 initializeCommands
方法。
您可以配置 @Tested
字段,以便在任何 @Before
方法运行之前对其进行初始化:
@Tested(availableDuringSetup = true)
private PromotionsAddOrUpdateEntryStrategy strategy;
有关详细信息,请参阅 API documentation。
不过,有一个更简单的解决方案,因为最近添加了对 @Injectable
注入 List
的支持(版本 1.28)。
因此,以下应该可以工作,不需要 @Before
方法:
@Tested PromotionsAddOrUpdateEntryStrategy strategy;
@Injectable AddOrUpdateEntryCommand precommand;