Java-Android PointF构造函数无法在JUnit测试中使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java-Android PointF构造函数无法在JUnit测试中使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1290字,纯文字阅读大概需要2分钟。
内容图文
我在尝试编写JUnit测试时偶然发现了这一点.诚然,这是我在JUnit中进行的首次单元测试,但是我的确感到非常困惑.
package com.example.dom.pointfbugrepro;
import android.graphics.PointF;
import org.junit.Test;
import static org.junit.Assert.*;
public class ExampleUnitTest {
@Test
public void pointf_isCorrect() throws Exception {
PointF foo = new PointF(5, 0);
assertEquals(5, foo.x, 0.0001f);
}
}
在全新的Android项目中运行此测试会导致声明失败:
java.lang.AssertionError:
Expected :5.0
Actual :0.0
我在调查此问题时发现的一件事是直接分配给PointF实例的x字段确实有效.
那么这是什么问题呢?为什么构造函数不能正确设置字段?我应该如何测试使用PointF Android类的类?
解决方法:
查看http://tools.android.com/tech-docs/unit-testing-support#TOC-Method-…-not-mocked.-
当您运行单元测试时,您正在使用虚拟版本的android jar.通常,您会看到“方法…未嘲笑.”例外,但是由于您直接访问公共字段,因此这些只是默认值.
根据您的要求,您可以只使用伪造的:您自己的扩展PointF的子类
public static class FakePointF extends PointF {
FakePointF(float x, float y) {
this.x = x;
this.y = y;
}
}
但是在更复杂的测试中,您可能最终不得不模拟很多其他方法.
解决方案不是很不错:您需要针对仿真器或设备运行测试化的测试,或者转而使用Robolectric之类的工具,其中测试运行程序将代替您使用“ shadows”.
另请参见此StackOverflow答案:android.graphics.Point: all methods are stubs.
内容总结
以上是互联网集市为您收集整理的Java-Android PointF构造函数无法在JUnit测试中使用全部内容,希望文章能够帮你解决Java-Android PointF构造函数无法在JUnit测试中使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。