开发人员始终需要注意所产生的代码。 在实施新功能或修复某些错误之后,应确保它们能够正常工作。 至少可以借助单元测试来实现。 由于此博客致力于Java编程语言,因此今天我将撰写有关JUnit 4.1和EasyMock 3. 1框架的文章。 这些框架的主要目的是简化单元测试的编写。
介绍
为了演示JUnit和EasyMock功能,我需要准备一些代码,这些代码将在测试中介绍。 因此,一开始我将向您介绍一个简单的
我为本教程开发的应用程序。 Java开发人员应该非常熟悉它,因为它可以模拟咖啡机的工作。 现在,我将用几句话描述应用程序的功能。 咖啡机有两个容器:用于盛水和用于咖啡。 您可以根据份量(小,中,大)制作三种咖啡。
- 积极的情况:您使一部分咖啡和容器中有足够的水和咖啡豆。
- 负面的情况:您煮了一部分咖啡,容器中没有足够的水或咖啡豆。
如果没有足够的容器,您可以重新装满。 在简要描述了应用程序的功能之后,您可以轻松地想象它应该如何工作。 现在该提供类的代码示例了。
申请代码
现在尝试变得更加耐心和细心。 您将在下面看到很多类,我将在下一段中对其进行测试。 如上所述,咖啡机可以生产三种类型的咖啡,具体取决于要获取的份量。 应用程序中的部分将表示为枚举。
public enum Portion {
SMALL(1), MEDIUM(2), LARGE(3);
private int size;
private Portion(int size) {
this.size = size;
}
public int size() {
return size;
}
}
我们的咖啡机有两个容器,这意味着我们需要为它们构建逻辑体系结构。 让我们坚持基于接口的智能编码方法。
public interface IContainer {
public boolean getPortion(Portion portion) throws NotEnoughException;
public int getCurrentVolume();
public int getTotalVolume();
public void refillContainer();
}
为了避免代码重复,我需要为容器开发一个抽象类。 在这种编程方法的上下文中,我想考虑一下我的一篇有关Abstract类VS接口的文章 。
public abstract class AbstractContainer implements IContainer {
private int containerTotalVolume;
private int currentVolume;
public AbstractContainer(int volume) {
if (volume < 1)
throw new IllegalArgumentException('Container's value must be greater then 0.');
containerTotalVolume = volume;
currentVolume = volume;
}
@Override
public boolean getPortion(Portion portion) throws NotEnoughException {
int delta = currentVolume - portion.size();
if (delta > -1) {
currentVolume -= portion.size();
return true;
} else
throw new NotEnoughException('Refill the '
+