Исключение фиктивного вызова, и новый объект, похоже, не работает с использованием powermockJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Исключение фиктивного вызова, и новый объект, похоже, не работает с использованием powermock

Сообщение Anonymous »

У меня есть следующий простой тестовый пример, который использует 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

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

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»