У меня есть простой тестовый пример, в котором powermock используется для имитации исключения из метода ExceptionClass.getRandom путем имитации создания объекта Random. Но, судя по результатам теста, obj.getRandom() возвращает случайное значение, поэтому Assert.assertTrue(obj.getRandom() == 111); завершается с ошибкой, но я думаю, что obj.getRandom () должен вернуть 111, пытаясь имитировать случайное создание и генерировать исключение, я бы попросил помощи.
Спасибо.
package com.example;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.powermock.modules.junit4.PowerMockRunner;
import static org.powermock.api.mockito.PowerMockito.*;
import java.util.Random;
class ExceptionClass {
public int getRandom() {
try {
//Mock the random object using whenNew(Random.class).withNoArguments()
Random random = new Random();
//random.nextInt should throw IllegalStateException,so that 111 is returned
return random.nextInt();
} catch (Exception e) {
return 111;
}
}
}
@RunWith(PowerMockRunner.class)
public class MockThrowExceptionTest {
@InjectMocks
ExceptionClass obj;
@Test
public void testGetRandom() throws Exception {
Random rand = mock(Random.class);
whenNew(Random.class).withNoArguments().thenReturn(rand);
when(rand.nextInt()).thenThrow(new IllegalStateException());
//An exception is thrown in ExceptionClass.getRandom method, so that 111 should be returned,but it is a random value
Assert.assertTrue(obj.getRandom() == 111);
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -powermock