我的应用程序连接到db并从此处获取类别树。在调试方案中,我可以看到这个大树对象,我只想到能够将这个对象保存在磁盘上的某个地方,以便在测试存根中使用。像这样:

mockedDao = mock(MyDao.class);
when(mockedDao.getCategoryTree()).thenReturn(mySavedObject);

假设 mySavedObject - 足够大,所以我不想手动生成它或编写特殊代代码。我只是希望能够在调试会话期间将其序列化并保存在某处,然后对其进行反序列化并在测试中传递给 thenReturn 。 是否有标准的方法可以这样做?如果不是如何更好地实施这种方法?

有帮助吗?

解决方案

喜欢你的想法,真棒!

我不知道一个可以提供该功能的库。如果对象都实现 Seriablizable ,则可以尝试使用 ObjectOutoutStream ObjectInputStream (即标准Java序列化)。通常他们没有。在这种情况下,使用 XStream 或其中一位朋友可能会有更多的运气。

其他提示

我们通常模拟整个数据库是这样的场景,重用(并隐式测试)代码来从DB加载类别。

具体来说,我们的单元测试是针对内存数据库运行的( hsqldb ) ,我们在每次测试运行之前通过导入测试数据进行初始化。

请查看动态管理Bean - 这提供了一种更改正在运行的值的方法java应用程序。也许有一种方法来定义一个保存树的MBean,读取树,将其存储在某处并稍后再次注入。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top