【发布时间】:2020-10-18 09:00:18
【问题描述】:
这是我的构造函数
public Dice(final int numOfDice)
{
if(numOfDice < Skunk.LOWEST_NUM_OF_DICE && numOfDice > Skunk.HIGHEST_NUM_OF_DICE)
{
throw new IllegalArgumentException("the number of dice must be " + Skunk.LOWEST_NUM_OF_DICE + " or " + Skunk.HIGHEST_NUM_OF_DICE);
}
this.numOfDice = numOfDice;
dice = new int[this.numOfDice];
Random r;
r = new Random();
for(int i=0; i<this.numOfDice; i++)
{
dice[i] = r.nextInt(HIGHEST_NUMBER_ON_DIE-LOWEST_NUMBER_ON_DIE+OFFSET) + LOWEST_NUMBER_ON_DIE;
}
}
我希望能够编写一个单元测试,在其中将骰子初始化为特定值。但是,我似乎无法弄清楚如何控制 Random 类。我在构造函数上尝试了@Override,但它只适用于函数。我尝试将 for 循环移动到一个名为 roll 的方法并在其上使用 @Override,但 @Override 不适用于构造函数中调用的函数。
我已经安装了 Mockito 并尝试遵循此处第一个答案中发布的建议: How to test a method that uses Random(), without arguments and return value, using JUnit or Mockito 但我不知道 Mockito 是如何工作的。
【问题讨论】:
标签: java eclipse unit-testing junit mockito