我正在为初级Java开发人员进行第一次求职面试的学习,现在我正在学习JUnit测试用例。这是我遇到的一个例子,我必须说它对我来说非常棘手(这是抽象的代码,所以我不知道如何测试它)。自定义方法的JUnit测试用例
public class JuiceMaker {
public Juice makeJuice(final List<Fruit> fruits) throws RottenFruitException {
for (final Fruit fruit : fruits) {
if (FruitInspector.isFruitRotten(fruit)) {
throw new RottenFruitException(fruit.getName() + “ is rotten. Cannot make juice.”);
}
}
return Juicer.juice(fruits);
}
}
我设法创造自己的唯一的例子是这样的一个:
JuiceMaker jm = new JuiceMaker();
@Test
public void isThrowingException() {
//when
try {
jm.throwsRuntime();
Assert.fail("Expected exception to be thrown");
} catch (RottenFruitException e) {
//then
assertThat(e)
.isInstanceOf(RottenFruitException.class)
.hasMessage((fruit.getName() + " is rotten. Cannot make juice.");
}
}
什么样的测试,我可以在这段代码进行任何提示吗?非常感谢你的帮助!
我想你应该在另一个stackoverlfow网站上提问这个问题,就像源码评论一样。 –
如果您提供Fruit,FruitInspector,Juicer和取决于果汁汁的代码,回答您的问题会更容易。此外,在您的测试示例中,您可以参考JuiceMaker类中未定义的throwsRuntime方法,因此请提供该类的完整定义。最后一件事:在你的例子中你正在访问水果对象,但它没有被定义。 – gawi
我没有这些方法的任何实现。这就是我所需要做的: “在测试驱动的开发测试中,应该记录实现以及测试它,记住这一点,为这些遗留代码编写测试,然后重构以去除隐式依赖。 –