我以为我理解了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的合同呢?
发布于 2011-11-23 20:50:44
你确定你应该得到编译警告吗?据我所知,CodePro中的契约只是用来生成带有适当断言的JUnit测试用例,而不是给出警告。
发布于 2011-11-23 21:28:38
如果你想在java开发中包含契约式设计,Cofoja绝对是一个更好的选择:
http://code.google.com/p/cofoja/
编辑:在Eclipse中设置Cofoja:
http://fsteeg.com/2011/02/07/setting-up-contracts-for-java-in-eclipse/
https://stackoverflow.com/questions/8161590
复制相似问题