我以为我理解了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生成的junit测试方法不受合同的影响。
那么你如何使用CodePro的合同?
答案 0 :(得分:1)
你确定你应该收到编译警告吗?从我所看到的,CodePro中的契约只是用正确的断言生成JUnit测试用例,而不是发出警告。
答案 1 :(得分:1)
如果您想在Java开发中包含合同设计,Cofoja绝对是更好的选择:
http://code.google.com/p/cofoja/
编辑: 在Eclipse中设置Cofoja:
http://fsteeg.com/2011/02/07/setting-up-contracts-for-java-in-eclipse/