I am just beginner for implementing JUnit testing. I have a test case as given below. I have tried the when...thenreturn + verify method as well.

@RunWith(MockitoJUnitRunner.class)

public class CategoryControllerTest {

@InjectMocks

CategoryController categeoryCntrlr;

@Mock

private CategoryService catSvc;

//private CategoryController catCntrl;

@Test

public void insertCategoryTest(){

Category cat=new Category();

cat.setStrCatName("Vehicle");

String str = categeoryCntrlr.insertCategory(cat);

System.out.println(str);

assertEquals("failure",str);

}

}

My Controller returns actually string 'success' but my above test case always says value of str as null.

When I used when...thenreturn() and verify, it is not actually testing my repository method, even if I change the return to something else the test case is passing. I know there is behavioral and testing. Is there any solution we can have both together? Can I get some beginners tutorial(I saw the calculator example and find methods tested, but no insert/update database)? I am not able to understand the reference document of Mockito, how it actually testing. Can anyone help me please ?

解决方案

I'm not 100% sure what your goals are for insertCategoryTest(), but you probably want to stub methods in your controller and/or service.

For example, to stub the insertCategory() method in your controller to always return "failure", you'd do the following:

when(categeoryCntrlr.insertCategory(any())).thenReturn("failure");

There are more examples about verifying interactions and stubbing method calls here: http://mockito.org

Link to Javadoc:

更多推荐