我正在学习Android(以及一般)中的单元测试。
在练习中,我构建了一个简单的输入验证器类,用于检查电子邮件和密码输入的有效性。
它有两种方法:
所以我考虑创建以下测试:
我做对了吗?或者这是“测试过度杀伤”?
答案 0 :(得分:2)
我会说这不是矫枉过正。这取决于它们在JUnit代码中的编写方式以及最初编写代码的方式。每个测试都会检查不同的逻辑路径,并且由于Android是用户关注的,因此这些场景非常重要,因为用户会做出令人惊讶的事情。
例如,每个测试应该只做一个断言通常是好的做法,以确保它测试单个单元。 您是否测试过代码的错误处理部分?还有任何可能的分支?
还可以查看使用ECLEmma来检查代码覆盖率,以检查它是否足以覆盖代码并提供指标。这只在将JUnit与标准启动器一起使用时才起作用,它取决于您使用的环境,以及您是否只是在没有安卓代码的情况下进行JUnit测试。从使用Roboelectric的评论中,可以找到here替代方法和教程以进行代码覆盖。
您可能还希望使用Robotium来执行可以测试用户交互的系统级(用户界面)测试。
我还会说一般关于单元测试的内容。应该隔离测试,使用Mock对象将有助于此并且将改进代码中的依赖注入。示例包括JMockit或Mockito。这些将使您在使用例如SQLite进行测试时更轻松。启用单元测试以专注于测试单个类将改善依赖注入和整体设计。
测试还应该将干净的代码标准保留为您的应用程序代码,以供将来用户理解。