首页 > 解决方案 > Java中只需要为Integer.valueOf()写Junit

问题描述

所以事情就是这样,我在我的代码中发现了 new Integer() 并且现在已弃用我打算将那段代码 (new Integer()) 删除到 Integer.valueOf() 但按照公司规则,我必须编写 Junit对于该更改,我只需要验证该代码图片无需编写该方法的整个覆盖范围,现在我很困惑,我该怎么做。

前:

@SuppressWarnings({ "rawtypes", "unchecked" })
    public List getLogsByLcrErrorCodeInLast(String code, long period) throws Exception {
        Object params = new ObjectPair(new Integer(code), new MesDbUtil(ibatis).getPastMesDbDate(period));
        List mesdbLogs = client.queryForList("LcrLog.getLogsByLcrErrorCodeInLast", params);
        Iterator mesdbLogsIter = mesdbLogs.iterator();
        List results = new ArrayList();
        while (mesdbLogsIter.hasNext()) {
            MesDbLcrLog mesdbLog = (MesDbLcrLog) mesdbLogsIter.next();
            results.add(mesdbLog.getLog());
        }
        return results;
    }

后::

@SuppressWarnings({ "rawtypes", "unchecked" })
    public List getLogsByLcrErrorCodeInLast(String code, long period) throws Exception {
        Object params = new ObjectPair(Integer.valueOf(code), new MesDbUtil(ibatis).getPastMesDbDate(period));
        List mesdbLogs = client.queryForList("LcrLog.getLogsByLcrErrorCodeInLast", params);
        Iterator mesdbLogsIter = mesdbLogs.iterator();
        List results = new ArrayList();
        while (mesdbLogsIter.hasNext()) {
            MesDbLcrLog mesdbLog = (MesDbLcrLog) mesdbLogsIter.next();
            results.add(mesdbLog.getLog());
        }
        return results;
    }

我试着做如下,我不知道它是否正确,并且因为代码审查也需要寻求一些专业的方式;

public class integerValueOf(){
    private Integer code=23;
    @Test
        public void testGetLogsByLcrErrorCodeInlast() throws Exception{
            assertEquals(new Integer(code), Integer.valueOf(code));
        }
    }

标签: javajunitinteger

解决方案


您是否对 JRE 中的所有其他 API 进行单元测试?不?那你为什么要对 Integer.valueOf(...) 进行单元测试呢?

您现有的单元测试getLogsByLcrErrorCodeInLast应该涵盖整数实例化的变化。例如,您对不同的值进行了测试,code并检查您是否获得了预期paramsclient.queryForList(...).

如果您没有测试,那么您需要在更改代码之前编写它们。

编辑:我之前什至没有注意到它,但是您的生产代码将字符串转换为整数,而您建议的单元测试将整数转换为整数。您的想法从根本上是有缺陷的,因为它没有测试您在生产中执行的代码。它允许像这样的错误通过带有绿色标志的测试。


推荐阅读