我正在尝试对一些像这样的java方法进行单元测试:
public boolean isInt (Object object){
return object.getClass().equals(Integer.class);
}
这是一个非常简单的示例,但我们还是继续吧。
问题是:如何在不为 Java 世界中的每个基本类型编写测试的情况下(使用 JUnit)对这样的方法进行单元测试?也许是Concolic Unit Testing ( jCute ) 是答案吗?
请留下您的想法,我希望用尽可能少的编码来使测试尽可能彻底。
编辑:单元测试的目标是检查该方法是否为除 Integer 之外的任何类型返回正确的结果,而不必定义一组逐一检查所有类型的测试。当我说原语时,我指的是 JDK 中的 native 类型(String、Float、Double、List、Map...)
最佳答案
原始类型的列表有限:byte、short、int、long、boolean、char。每个原语都有相应的包装器。就是这样。因此,为每个基本类型编写测试确实很容易。
顺便说一句,您的代码无法用于基元,因为它们不是对象,因此您无法调用 isInt(123)
。
如果您想编写较短的测试,您可以编写如下内容:
@Test
public void isInt() {
assertTrue(obj.isInt(new Integer(1)));
}
@Test
public void isNotInt() {
for (Object obj : new Object[] {new Short(1), new Boolean(true), new Long(1), new Chaeracter('a')}) {
assertFalse(obj.isInt(obj));
}
}
JUnit 还支持参数化
测试。然而,对于这种简单的情况来说,这听起来有点过分了。
关于java - 对使用反射的方法进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24388062/