Feed4JUnit 与 JUnit
经常,在应用程序的业务逻辑中存在大量的这样的接口:他们接受不同的输入,然后进行 或验证,或处理,进而完成相同的流程。比如网站的登录入口,用户名和密码都有长度的限制,同时也具有是否允许特殊字 符的限制等,所以在我们进行其单元测试的过程中,根据不同长度的用户名和密码,以及不同的字符组合,只需要提供相同 的测试代码结构,就能完成测试,不同的仅仅测试数据与期望值,但是因为每一个测试方法中的输入参数不同,我们必须为 每一个输入组编写单独的测试用例,从而产生大量冗余代码,十分不便于维护。
基于以上场景,JUnit 4 提供了参 数化的特性,从而能够实现不同数据输入对相同测试代码的测试,如清单 1 所示:
清单 1. JUnit 4 参数化测试代 码示例
package sample.test; import static org.junit.Assert.assertEquals; import java.util.Arrays; import java.util.Collection; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import sample.code.UserAccess; /* * JUnit - Parameter test sample */ @RunWith(Parameterized.class) public class JunitSample { private String user; private String pw; private boolean expected; @Parameters public static Collection dataGenerater() { return Arrays.asList(new Object[][] { { "user01", "123456", true }, { "helloworld", "123456", false }, { "david", "re*ads", false }, { "goodone", "onegood", true } }); } public JunitSample(String user, String pw, boolean expected) { this.user = user; this.pw = pw; this.expected = expected; } @Test public void testAccessCheck() { assertEquals(expected, UserAccess.accessCheck(user, pw)); } }
通过以上示例代码可以看出,JUnit 4 通过使用一个标记 @Parameters 注释的返回类型为 Collection 的静态 方法产生数据,测试数据通过变量传递给测试方法,从而完成多数据输入的测试。但是随着业务的需要,测试人员需要经常 增加测试数据与修改现有测试数据,JUnit 4 提供的硬编码方式已经愈显笨重和不便,数据与代码分离显得尤为重要。
幸好,本文所述的 Feed4JUnit 良好的解决了数据与代码分离的问题,Feed4JUnit 是 JUnit 测试框架的扩展,它 通过操作来自于文件以及不同的数据源的测试数据,使您的单元测试变得更容易编写与维护。
本文将通过示例向您 展示 Feed4JUnit 的安装以及测试代码与数据分离的实现,请注意本文的示例代码全部基于针对如下一个十分简单用户登录 检验的类,并且假定您正在使用 Eclipse 作为您的 IDE,请看清单 2 类代码:
清单 2. 实例类
package sample.code; public class UserAccess { // simple validation for user name and password public static boolean accessCheck(String userName, String password) { if (userName.length() <= 4 || userName.length() > 8) return false; if (password.length() <= 4 || password.length() > 8) return false; if (userName.contains("@")) return false; if (password.contains("*")) return false; return true; } }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据
, 测试
, junit
, 单元测试
, 代码
, import
, JUnit java 测试
, 不同
Arrays简单示例
junit单元测试、idea junit单元测试、maven junit单元测试、java junit单元测试、junit4单元测试实例,以便于您获取更多的相关知识。