Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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/2/unit-testing/4.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 在单元测试期间gui应该是可见的吗?_Java_Unit Testing_User Interface - Fatal编程技术网

Java 在单元测试期间gui应该是可见的吗?

Java 在单元测试期间gui应该是可见的吗?,java,unit-testing,user-interface,Java,Unit Testing,User Interface,我正在用JUnit对我的应用程序进行单元测试。它使用或试图使用。。。MVP模式、hibernate和swing gui 在我的测试中,我正在测试持久性是否按预期工作,例如日期格式是否正确,数据库表之间的关系是否正确,等等 下面是一个经过编辑的示例: @Test public void testCheckBeitragCalculation() { MainView view = new MainView(); view.initGUI(); Controller per

我正在用JUnit对我的应用程序进行单元测试。它使用或试图使用。。。MVP模式、hibernate和swing gui

在我的测试中,我正在测试持久性是否按预期工作,例如日期格式是否正确,数据库表之间的关系是否正确,等等

下面是一个经过编辑的示例:

@Test
public void testCheckBeitragCalculation() {
    MainView view = new MainView();
    view.initGUI();

    Controller persist = new Controller(view);
    persist .saveData(testObject);

    Controller edit = new Controller(view);

    Controller search = new Controller(edit);

    search.getData("10001"); // primary key

    TestObject t2 = edit.getViewData();

    assertEquals(10, t2.getBeitrag());
}
我启动主视图是因为两个控制器需要对主视图的引用来传递数据

控制器持久化对象,控制器编辑是编辑视图的控制器,控制器搜索需要编辑引用,因为它在数据库中查找实体,然后通过编辑控制器在编辑视图中显示此数据

因为这些控制器在GUI中显示数据,所以GUI在单元测试期间会在瞬间显示数据

那是坏习惯吗?我已经读到不应该测试GUI代码,但我不是在测试GUI本身,它只是被测试代码调用


谢谢你的建议

对此没有正确的答案。一般来说,如果它解决了您的目的,那么您可以继续进行此操作,但是,如果将来您的产品构建系统添加这些junit测试用例,以便在每次构建之后通过计划的每日构建来执行,例如jenkins和构建运行的方框,一些服务器不支持任何UI,或者在特定时间不可用,例如XWindows则您的测试可能会失败。

如果您在Linux上没有显示构建服务器的机器上运行这些测试。。。你会有麻烦的。在测试控制器/模型时,您可能希望签出mockito之类的模拟框架来隐藏您的UI否否否。单元测试必须测试单元,而不是整个应用程序。另外,如果您正在传递MainView,它是一个类,而不是一个接口!在控制器中,这两者耦合得太紧。