![]() |
1
2
众所周知,Java标准序列化在对象更改其版本(字段的内容、命名)时不太有用。对于快速演示项目来说很好。
更适合您的需求的方法是objetcs支持您自己的(二进制)自定义序列化:
这样的
需要进一步的getter和setter,以及将版本初始化为当前版本的构造函数。 如果您更改或添加适当的读写版本,那么这种序列化可以安全地重构。对于使用外部libs类而不是控件的复杂对象,它可以做更多的工作,但是字符串、列表很容易序列化。 |
![]() |
2
1
我认为您要做的是存储“状态”,然后在测试中恢复它,以确保bug保持不变。 简而言之:阿法克没有这样的通用代码生成工具,但是只要保持几个约束条件,编写这样的工具是很小的工作。 长评论: 有一些约束条件可以发挥作用。如果所有的东西都只是bean,其中包含所有需要的字段的getter和setter,那么为它生成代码就不那么困难了。是的,如果您将生成的代码与普通代码一起重构,那么重命名是安全的。如果缺少setter,则此方法将不起作用。这只是为什么这不是一般解决方案的一个例子。 例如,重构还可以将字段移动到其他类。您希望如何从该类的其他字段引入值?你以后怎么知道那些改变了你保存状态的数据是否仍然反映了关键数据?或者更糟的是,假设重构给同一字段赋予了与以前不同的含义。 bug本身的性质也是一个约束。例如,假设发生错误的原因是字段/方法具有这个名称和那个名称。如果重构现在更改了名称,那么无论您的状态如何,bug都将不再出现。 这些只是武断的例子,可能与你的现实生活完全无关。但这是一个个案决策,而不是一般策略。不管怎样,如果你知道你的代码,bug和重构都能很好地完成这个任务,那么制造这样一个工具只需要不到一天的时间,可能要少得多。 使用XStream,您也可以部分地得到它,但是您必须自己更改XML。如果您使用例如db4o,您必须告诉它这个和那个字段现在有这个和那个名称。 |
![]() |
mg610 · 如何开始C++单元测试 2 年前 |
![]() |
vidhu · 无URL的自动化测试 2 年前 |
![]() |
Aessandro · js开关站单元测试[关闭] 6 年前 |
![]() |
AntoineLB · 断言后期工作Django 6 年前 |
|
ravikant · Selenium脚本不工作异常 7 年前 |
![]() |
splintor · 如何在angular中的单元测试中测试文档点击 7 年前 |