У меня есть метод, который я пробую к модульному тесту. Этот метод берет параметр в качестве ArrayList и делает вещи с ним. Насмешка, которую я пытаюсь определить:
ArrayList<String> mocked = mock(ArrayList.class);
который дает преобразование непроверенное [непроверенное]" предупреждение.
ArrayList<String> mocked = mock(ArrayList<String>.class);
дает мне ошибку.
Кто-либо хочет просветить меня относительно того, что я делаю неправильно?
ArrayList
- это конструкция, не поддерживаемая компилятором Java.
Для первой попытки вы должны сделать следующее:
@SuppressWarnings( "unchecked" )
ArrayList<String> mocked = mock(ArrayList.class);
Это происходит потому, что метод mock
может возвращать только необработанный тип. В общем случае использовать необработанные типы нецелесообразно, поскольку это может привести к ошибкам времени выполнения. В вашем случае это прекрасно, потому что вы знаете, что mocked
в любом случае не является НАСТОЯЩИМ ArrayList
.
Просто общий совет по аннотации @SuppressWarnings ("unchecked")
. Старайтесь держать его как можно ближе к источнику проблемы. Например, вы можете указать его только для объявления переменной или запретить его для всего метода. В общем, подавляйте это для переменной, потому что в противном случае широкая аннотация метода может подавить другие проблемы в вашей функции.