如何在使用Eclipse时实现命令行顺序

时间:2014-05-10 15:44:38

标签: java eclipse

我不知道如何使用Eclipse来执行“java -ea -da:Derived AssertionCheck”。你能帮帮我吗?

谢谢!

课程在这里:

class Base {
public void foo() {
assert true; // ASSERT_BASE
}
}

class Derived extends Base {
public void foo() {
assert false; // ASSERT_DERIVED
}
}
class AssertionCheck {
public static void main(String []args) {
try {
Base base = new Base();
base.foo();
}
catch(Exception e) {
base = new Derived();
base.foo();
}
}
}

2 个答案:

答案 0 :(得分:1)

https://stackoverflow.com/a/11415579/1791197让它像Priyank Doshi的节目一样只是只是" -ea"设置所有参数" -ea -da:Derived AssertionCheck"

答案 1 :(得分:0)

要运行,您需要移动Base base = new Base();在try语句之外,像这样:

class AssertionCheck {
   public static void main(String []args) {
      Base base = new Base();
      try {
         base.foo();
      }
      catch(Exception e) {
         base = new Derived();
         base.foo();
      }
   }
}

我不确定你要测试的是什么....在命令行上测试启用断言,或测试捕获Base类抛出的断言。

如果Base类具有" assert.false",但不在Derived类上,那么上面的catch语句将不会成功。断言会抛出错误而不是异常,因此您需要添加

catch (AssertionError er) {
   base = new Derived();
   base.foo():
}

通常,AssertionError不会在生产代码中使用或实现,因为它通常意味着代码中存在问题而不是无法正确处理。