抑制Swing可见性

时间:2009-12-10 15:51:09

标签: java swing testing

我已经获得了一堆杂乱的代码和一个短暂的时间限制(没有意外)为它编写一些测试。我写过测试了!它们是很好的测试。

不幸的是,实例化一些项目的组件会导致Swing GUI元素被构造并设置为可见。我不希望这种情况发生的原因很明显,所以我想知道在实例化这些对象之前是否有办法抑制任何基于Swing的东西的显示。从本质上讲,某种主要的可见性设置,即“我不关心是否有人在Swing组件上调用setVisible,但不显示任何内容。”

我认为没有,我认为除了修改项目代码之外,还有其他解决方案。我以为我会问。

4 个答案:

答案 0 :(得分:1)

我没有完全解决您的确切问题,但您可以扩展组件类(反过来扩展JComponent)并使用空实现覆盖setVisible()方法。 当然,新类将驻留在测试包中。

否则,强烈建议重构组件,而不是仅仅为了测试它们而进行“黑客攻击”。

答案 1 :(得分:1)

好吧,我不会回答我想要的内容(这会改变将GUI与工作分开的代码,因此它是可测试的)......但您可能会考虑headless mode。通过捕获HeadlessException,您将不得不包装因失败而导致的GUI部分。

很可能这样的事情会破坏测试环境中的代码,但是因为事情可能必须设置为null。

我认为你可以做到这一点,但结果将是更加混乱的代码......但如果你没有时间修复它,我想这可能会有用。

答案 2 :(得分:0)

不知道这是否有用,但如果框架本身不可见,则设置Swing组件(JTextField,JButton ....)可见无效。

答案 3 :(得分:0)

也许将mainFrame(所有子组件的容器)的可见性设置为false,不应该破坏代码,同时留下较少的UI。

 mainFrame = new JFrame();
 ....
 // Commeted out for tests
 // mainFrame.setVisible(true);
 mainFrame.setVisible(false);