1

如何创建一个将一些东西添加到地图并显示它的类。

考虑到通常需要用单元测试覆盖所有代码,并且测试显示数据的方法是一个问题,我想知道最好的界面。

这是我的第一个想法:

class MyFirstProgram {
    private Map<String, String> map = new HashMap<String,String>();
    public int insertData(...) {...}
    public void displayData(...) {...}
}

...但是无法测试有关检索的任何内容,并且有这种显示方法...所以我认为:

class MyFirstProgram {
    private Map<String, String> map = new HashMap<String,String>();
    public int insertData(...) {...}
    private Map<String, String> retrieveData(...) {...}
    public int displayData(...) {...call ; return status}
}

在这种情况下,可以使用反射测试私有方法,但仍然有这种显示方法......

对设计有任何想法吗?

4

2 回答 2

0

您可以尝试为 Map 变量创建 getter 和 setter。

class MyFirstProgram {
    private Map<String, String> map = new HashMap<String,String>();
    public setMap(Map data) {...}
    public Map getMap(...) {...}
}

然后无论您想在哪里打印地图值,都可以使用 getMap 方法。如果您不想使用 setter 和 getter,我们可以使用任何将 Map 作为输入并打印它的方法。

public void PrintMap(Map data){print(data)}
于 2012-12-06T18:09:06.853 回答
0

务实的方法是允许访问 Map (通过带有注释的默认/包访问方法// for unit tests,并访问它。实际上,更好的是,命名该方法forUnitTestGetMap()以使其更加清晰并避免与标准 getXXX 命名约定混淆。我'通常只需调用toString()Map 并比较它应该是什么,YMMV 就可以了。如果你insertData()只是在 HashMap 上调用标准方法(例如 put()),那么你可以而且应该测试的东西不多,因为大多数该代码是Java库代码。

或者,在该displayData()方法中,它是否创建了数据的替代表示?例如 XML、JSON,也许是 JPanel?如果是这样,请查看以查看数据的内容是否正确。显然,XML 比 JPanel 容易得多,但您仍然可以执行检查 JPanel 是否有 3 个子项,第一个是名为“OK”的按钮...

于 2012-12-06T19:21:31.640 回答