Нужно только написать Junit для Integer.valueOf () в Java - PullRequest
0 голосов
/ 21 марта 2019

Так вот в чем дело, я нашел новый Integer () в своем коде, и он устарел, теперь я планировал удалить этот фрагмент кода (новый 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));
        }
    }

1 Ответ

2 голосов
/ 21 марта 2019

Вы тестируете юниты все остальные API в JRE? Нет? Зачем тогда вам тестировать модуль Integer.valueOf (...)?

Ваши существующие модульные тесты для getLogsByLcrErrorCodeInLast должны охватывать изменения в целочисленных экземплярах. Например. у вас есть тесты для различных значений code и убедитесь, что вы получите ожидаемое params в client.queryForList(...).

Если у вас нет тестов, вам нужно написать их, прежде чем менять код.

Редактировать: я даже раньше этого не замечал, но ваш производственный код преобразует строку в целое число, а ваш тестовый модуль с произвольной выборкой преобразует целое число в целое число. Ваша идея в корне ошибочна, потому что она не проверяет код, который вы выполняете в производстве. Это позволяет ошибкам проходить тестирование с зелеными флажками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...