46

How do I write a Mockito-based JUnit method to test this method adduser()? I tried writing one, but it's failing with an error message saying exception is not handled. The error is displayed for:

when(service.addUser("nginx")).thenReturn("apache"); 

Assume addUser() method in business class never catches any exception and rethrowing is not done.

class Business { public User addUser() throws ServiceException{ User user = service.addUser("nginx"); return user; } } 

TEST CASE METHOD :

Here in the test class I am mocking the service layer class with @Mock attribute and injecting it.

@Mock Service service; @InjectMocks Business business = new Business(); @Test public void testAddUser() { when(service.addUser("nginx")).thenReturn("apache"); User user = business.addUser("nginx"); assertNotNull(user); } 

Please tell me how to handle the exception scenario in the test case.

1
  • 2
    Are you aware that all that you're testing is that the method returns something not null. I think you ought to assert that it returns "apache", because you really need to check that service.addUser() has actually been called. Commented Feb 11, 2012 at 8:22

1 Answer 1

72

Declare the exception in the test method.

public void testAddUser() throws ServiceException { ... } 
Sign up to request clarification or add additional context in comments.

2 Comments

I have a method which can throw 11 different exceptions (it's an 3rd party dependency), so the list of thrown exceptions get ridiculously long. Any way to avoid that?
I have got into the habit of just writing throws Exception on all my JUnit methods. There is literally no reason not to, as the JUnit framework catches and reports on anything that you don't catch. @Olov

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.