java – static initializer似乎在junit测试期间不运行
发布时间:2020-12-15 02:14:52 所属栏目:Java 来源:网络整理
导读:我单元测试一个静态实用程序类的方法: @Testpublic void createGenreString(){ //Arrange String expected1 = "Action,Adventure,Animation,//Act String actual1 = Utils.createGenreString(new int[]{28,12,16,35}); //Assert assertThat(actual1,is(equa
我单元测试一个静态实用程序类的方法:
@Test public void createGenreString() { //Arrange String expected1 = "Action,Adventure,Animation,//Act String actual1 = Utils.createGenreString(new int[]{28,12,16,35}); //Assert assertThat(actual1,is(equalTo(expected1))); } 这个静态方法正在访问一种静态地图对象(MovieDbContract.GENRES),它使用整数键检索String值: public static String createGenreString(int[] genreIds) { StringBuilder sb = new StringBuilder(); int length = genreIds.length; for (int i = 0; i < length && genreIds[i] != 0; i++) { if (i != 0) sb.append(","); String genre = MovieDbContract.GENRES.get(genreIds[i]); sb.append(genre != null ? genre : "Unknown"); } return sb.toString(); } 这个静态地图对象应该通过静态初始化器填充数据: public static final SparseArray<String> GENRES = new SparseArray<>(); static { GENRES.put(28,"Action"); GENRES.put(12,"Adventure"); GENRES.put(16,"Animation"); . . } 现在的问题是,当测试运行时,map对象为null,它没有填充数据,因此测试失败.但程序本身工作正常,包含数据.任何人都知道为什么在测试期间这是不同的?我正在使用JUnit 4.12,这一切都是在Android环境中完成的 解决方法
好吧,发现每当在测试的方法中使用像SparseArray或ContentValues这样的android框架类时,你必须在模拟器或设备上运行测试作为检测单元测试(androidTest),否则这些对象不会像他们应该那样初始化
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- android一个向上滑动显示菜单,向下滑动隐藏菜单实现
- 通过扩展RandomAccessFile类使之具备Buffer改善I/O性能--转
- NoClassDefFoundError:java中的org / apache / poi / ss /
- java – 依赖管理与maven
- 覆盖Java中的私有final方法
- java – 运行Facebook官方示例时的NoClassDefFoundError
- java – 我可以将两个列表相互排序吗?
- java – 如何在运行时将类转换为类似于类的东西?
- spring中的FactoryBean代码示例
- java – Spring – 从类路径资源[Beans.xml]加载XML bean定