Java:在任何地方无条件跳转到外部范围

时间:2018-08-07 20:29:45

标签: java

让我们说我有一个执行foo的程序。 baz是一项需要测试的新功能。

public static void main (String [] args)
{
  foo ();   // existing

  baz ();  // new
}

为了测试baz,我将其放在foo前面。因此,无需等待foo。

我还想在baz之后结束(跳转到外部范围)。它是关于测试baz的,之后我想退出。但是我不想将foo放在注释中(也许它比1行要复杂得多)。

我想到的最好的就是这个。

public static void main (String [] args)
{
   baz (); 
   if (1==1) return;  // unconditional jump to outer scope

   foo ();
}

我不喜欢这样

  

if(1 == 1)

但是我没有其他选择。

不允许简单的返回(编译器错误,无法访问的代码)。

仅当我们谈论main时,System.exit才有效,但如果我的代码处于更大的上下文中,则System.exit无效。我想回到外部范围。

有什么更好的主意吗?

1 个答案:

答案 0 :(得分:5)

一种选择是使用行业标准方法进行测试驱动开发(TDD)。

使用标准测试运行程序(例如JUnitTestNG)编写单元测试。如果您采用这种方法,则不必修改生产代码即可进行测试。

从您的测试班中,直接致电baz()。另外一个好处是,您现在还可以进行测试,以验证此方法现在和将来的行为。

我建议您阅读有关TDD的主题。有很多可用的资源。这不是灵丹妙药,但是使用这种方法有很多好处。