Creating unitary tests in Spring 3

前端 未结 1 2024
臣服心动
臣服心动 2021-02-04 17:31

I\'m starting on testing applications in general and I want to create several tests to learn Mockito in Spring. I\'ve been reading several information but I have some general do

1条回答
  •  南方客
    南方客 (楼主)
    2021-02-04 17:57

    @RunWith(MockitoJUnitRunner.class)
    

    With this declaration you are suppose to write a unit test. Unit tests are exercising a single class mocking all dependencies. Typically you will inject mocked dependencies declared like this in your test case:

    @Mock
    private YourDependency yourDependencyMock;
    

    @RunWith(SpringJUnit4ClassRunner.class)
    

    Spring runner is meant for integration test (component test?) In this type of tests you are exercising a whole bunch of classes, in other words you are testing a single class with real dependencies (testing a controller with real services, DAOs, in-memory database, etc.)

    You should probably have both categories in your application. Althought it is advices to have more unit tests and only few smoke integration tests, but I often found myself more confident writing almost only integration tests.

    As for your second question, you should have:

    • unit tests for each class (controller, services, DAOs) separately with mocked all other classes

    • integration tests for a whole single CRUD operation. For instance creating a user that exercises controller, service, DAO and in-memory database.

    0 讨论(0)
提交回复
热议问题