У меня есть некоторые проблемы, издевающиеся над методом (используя mockito), которые в зависимости от входного параметра возвращают String или исключение.Mocking a Exception
Код модульного теста кажется неправильным, но даже после запроса google я не смог найти решение.
Спасибо за любую помощь
public class MyClassTest
{
public MyClass mc;
public ClassUnknown cu;
@Before
public void setUp()
{
mc = new MyClass();
cu = mock(ClassUnknown.class);
// The next two lines seems to be wrong
when(cu.methodUnknown("hello")).thenReturn("hello there");
when(cu.methodUnknown("???")).thenThrow(new Exception("don't know"));
}
@Test
public void testMain()
{
mc.mainMethod("hello");
.....;
}
}
и вот "classUnknown":
public class ClassUnknown
{
public String methodUnknown(String s) throws Exception
{
// The real logic is much more complex and does some CRUD operations
if (s.equals("Hello"))
{
return "Hello there";
}
throw new Exception("don't know");
}
}
и класс для тестирования:
public class MyClass
{
public void mainMethod(String s)
{
ClassUnknown cu = new ClassUnknown();
try
{
String methodUnknown = cu.methodUnknown(s);
System.out.println(methodUnknown);
} catch (Exception ex)
{
System.out.println(ex.getMessage());
}
}
}
Спасибо. Я добавляю, чтобы добавить исключение throw в SetUp(), иначе IDE будет помечать класс неправильно, но не работает. Действительно ли необходимо добавить броски в SetUp()? – ken