Java FEST:如何正确使用NoExitSecurityManager?
我开始使用它来帮助我在JavaSwingGUI上执行单元测试 现在,我设法看完了文档(大部分是不推荐的),并通过查看Javadoc和代码来帮助我 现在我在使用NoExit SecurityManager时遇到了一个问题。这本书已经很过时了,但我们可以理解其中的主要内容 我只是尝试测试我的“退出”菜单项在GUI中是否运行良好。因此,我需要阻止System.exit(0)并将程序的退出状态映射到JUnit测试 下面是我用来执行测试的简化代码(测试的类是Java FEST:如何正确使用NoExitSecurityManager?,java,swing,unit-testing,user-interface,fest,Java,Swing,Unit Testing,User Interface,Fest,我开始使用它来帮助我在JavaSwingGUI上执行单元测试 现在,我设法看完了文档(大部分是不推荐的),并通过查看Javadoc和代码来帮助我 现在我在使用NoExit SecurityManager时遇到了一个问题。这本书已经很过时了,但我们可以理解其中的主要内容 我只是尝试测试我的“退出”菜单项在GUI中是否运行良好。因此,我需要阻止System.exit(0)并将程序的退出状态映射到JUnit测试 下面是我用来执行测试的简化代码(测试的类是GraphicalUserInterface)
GraphicalUserInterface
)
所有的测试都执行得很好,一切似乎都正常,只是最后我得到了一个java.lang.NullPointerException
因此,我想知道我做错了什么(或者我可以做些什么来改进,以避免在测试结束时出现这个空指针异常)。我在代码中找到了解决方案。事实上,正确的方法是:
@Test
public final void testFileMenuQuitMenuItem() {
NoExitSecurityManagerInstaller noExitSecurityManagerInstaller =
NoExitSecurityManagerInstaller.installNoExitSecurityManager(new ExpectExitSuccess());
gui.menuItemWithPath("File", "Quit").click();
noExitSecurityManagerInstaller.uninstall();
}
这样可以防止NoExitSecurityManager污染每个测试。我在代码中找到了解决方案。事实上,正确的方法是:
@Test
public final void testFileMenuQuitMenuItem() {
NoExitSecurityManagerInstaller noExitSecurityManagerInstaller =
NoExitSecurityManagerInstaller.installNoExitSecurityManager(new ExpectExitSuccess());
gui.menuItemWithPath("File", "Quit").click();
noExitSecurityManagerInstaller.uninstall();
}
这样可以防止NoExitSecurityManager污染每个测试
@Test
public final void testFileMenuQuitMenuItem() {
NoExitSecurityManagerInstaller noExitSecurityManagerInstaller =
NoExitSecurityManagerInstaller.installNoExitSecurityManager(new ExpectExitSuccess());
gui.menuItemWithPath("File", "Quit").click();
noExitSecurityManagerInstaller.uninstall();
}