Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java FEST:如何正确使用NoExitSecurityManager?_Java_Swing_Unit Testing_User Interface_Fest - Fatal编程技术网

Java FEST:如何正确使用NoExitSecurityManager?

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)

我开始使用它来帮助我在JavaSwingGUI上执行单元测试

现在,我设法看完了文档(大部分是不推荐的),并通过查看Javadoc和代码来帮助我

现在我在使用NoExit SecurityManager时遇到了一个问题。这本书已经很过时了,但我们可以理解其中的主要内容

我只是尝试测试我的“退出”菜单项在GUI中是否运行良好。因此,我需要阻止System.exit(0)并将程序的退出状态映射到JUnit测试

下面是我用来执行测试的简化代码(测试的类是
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();
 }