5

我以为我了解 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 的合约呢?

4

2 回答 2

1

Are you sure you are supposed to get compilation warnings? From what I've seen, contracts in CodePro are only meant to generate JUnit test cases with the proper asserts, not to give warnings.

于 2011-11-23T12:50:43.550 回答
1

如果你想在你的 java 开发中包含契约式设计,Cofoja 绝对是一个更好的选择:

http://code.google.com/p/cofoja/

编辑:在 Eclipse 中设置 Cofoja:

http://fsteeg.com/2011/02/07/setting-up-contracts-for-java-in-eclipse/

于 2011-11-23T13:28:37.613 回答