Нужно ли проверять вызов исключения путем замены локальной переменной File.
public class ClassA {
public void writeToFile(String filePathString) throws FileNotFoundException {
File f = new File(filePathString);
if(f.exists() && !f.isDirectory()) {
// do something
}else throw new FileNotFoundException();
}
}
Все равно тест проходит даже если менять значения переменной f.exists()
@RunWith(PowerMockRunner.class)
@PrepareForTest(ClassA.class)
public class ClassATest {
ClassA classA;
@Before
public void setUp() throws Exception {
classA = new ClassA();
}
@Test
public void writeToFile_throwExIfFileNotFound() throws Exception {
File f = Mockito.mock(File.class);
Mockito.when(f.exists())
.thenReturn(true);
PowerMockito.whenNew(File.class)
.withArguments(Mockito.anyString())
.thenReturn(f);
try{
classA.writeToFile(Mockito.anyString());
}catch (Exception ex){
Assertions.assertThat(ex)
.isInstanceOf(FileNotFoundException.class);
}
}
}
Все равно тест проходит даже если менять значения переменной f.exists()
Вы же в данном тесте проверяете, что будет выброшено исключение, если файла нет?
В таком случае f.exists()
должно вернуть false
(либо f.isDirectory() == true
) - вы же его устанавливаете в true
:
Mockito.when(f.exists())
.thenReturn(true);
PS: для проверки исключения проще указать в аннотации @Test
ожидаемое исключение, и если оно не будет выброшено - тест будет считаться не пройденным:
@Test(expected=FileNotFoundException.class)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Наполняю список с клавиатуры пока не введу специальное слово, потом вывожу все слова на экран кроме последнего
Хочу написать морской бой с “бесконечным” полем, то есть поле увеличивалось бы в масштабах, количество кораблей тожеКлиент серверное приложение
В главной активности находится класс фрагмента использующий LoaderManager для загрузки данных из БД для отображения их изменения в реальном времени,...