使用代码合同进行Junit测试

时间:2018-02-01 17:23:39

标签: java junit

所以我有这个创建帐户的方法:

private int balance;

@Requires("initialBalance > -1")
public Account(int initialBalance) {
    balance = initialBalance;
}

注意" @Requires(" initialBalance> -1")"停止使用负余额创建的帐户。

我尝试运行以下测试,以确保未创建负余额的帐户:

@Test(expected=PreconditionError.class)
public void testAccountBad() {
    new Account(-1);
}

代码运行正常,但即使在测试中声明预期的前提条件错误,测试也会失败。

建设性的帮助将不胜感激,仍然在这个领域找到了方向。

1 个答案:

答案 0 :(得分:0)

您是否正在将{{3}}用于@Requires?

如果是,它使用“字节码检测来提供运行时检查”。

要进行工作测试,请确保:

  

要执行使用合同检查编译的代码,请确保   生成的文件(附加的.class和.contracts文件)在你的   类路径并将Cofoja JAR文件作为Java代理启用。

     

或者使用位于PreMain类中的离线指导者,   在com.google.java.contract.core.agent包下,并获取路径   将文件分类为命令行参数。