我以为我理解CodePro的合同,但它们似乎没有效果。例如:
public class ContractTest {
private int number;
/**
* @pre inputNumber > 0
*
* Alternatively:
* @post number > 0
*/
public void setNumber(int inputNumber) {
number = inputNumber;
}
public int getNumber() {
return number;
}
public static void main(String args[]) {
ConditionsTest conditionsTest = new ConditionsTest();
conditionsTest.setNumber(-5);
System.out.println("Number: " + conditionsTest.getNumber());
}
}
运行main(String[])方法原因:
number: -5
要打印。没有编译警告(预期),也没有抛出异常。同样,由CodePro生成的单元测试方法不受合同的影响。
那么如何使用CodePro的合约呢?
您确定应该得到编译警告吗?从我所看到的来看,CodePro中的契约只意味着生成具有适当断言的JUnit测试用例,而不是给出警告。
如果您想在java开发中包含契约式设计,Cofoja绝对是更好的选择:
http://code.google.com/p/cofoja/编辑:在Eclipse中设置Cofoja:
http://fsteeg.com/2011/02/07/setting-up-contracts-for-java-in-eclipse/