@Mock은 Mock 객체를 생성한다.


@InjectMocks는 객체를 생성해서 생성한 Mock 객체들을 주입한다.


다음은 이를 활용한 예제이다.


import org.junit.Test;

import org.junit.runner.RunWith;

import org.mockito.InjectMocks;

import org.mockito.Mock;

import org.mockito.MockitoAnnotations;

import org.mockito.runners.MockitoJUnitRunner;


@RunWith(MockitoJUnitRunner.class)

public class MockitoTest {


    @Mock

    ClassA classA;


    @InjectMocks

    ClassB classB;


    @Test

    public void test() {

//        MockitoAnnotations.initMocks(this);

        System.out.println(classA);

        System.out.println(classB);

    }


}


class ClassA {

}


class ClassB {

    private ClassA classA;


    @Override

    public String toString() {

        return "ClassB{" +

                "classA=" + classA +

                '}';

    }

}


Mockito를 애노테이션 (Annotation) 기반으로 사용하기 위해


@RunWith(MockitoJUnitRunner.class)


혹은


MockitoAnnotations.initMocks(this);


를 사용한다.


Reference:

http://stackoverflow.com/questions/16467685/difference-between-mock-and-injectmocks

저작자 표시

Posted by izeye

스프링 MVC에서 JSR 303 @Valid를 사용하기 위해 다음과 같이 한다.


pom.xml에 다음을 추가한다.


<dependency>

<groupId>org.hibernate</groupId>

<artifactId>hibernate-validator</artifactId>

<version>5.1.1.Final</version>

</dependency>


도메인 클래스에 다음과 같이 애노테이션으로 설정한다.


public class Content {

...

@Size(min = 1)

private String title;


@Size(min = 1)

@URL

private String location;

...

}


컨트롤러에서 다음과 같이 @Valid와 BindingResult를 활용한다.


@RequestMapping(value = "/content/add", method = RequestMethod.POST)

public String add(@Valid Content content, BindingResult bindingResult) {

if (bindingResult.hasErrors()) {

return "content/add.html";

}

contentService.addContent(content);

return "redirect:/content/mine";

}


Thymeleaf를 사용한다면,


다음과 같이 HTML 파일에서 활용할 수 있다.


<input id="title" type="text" class="form-control" th:field="*{title}" />

<p th:if="${#fields.hasErrors('title')}" th:errors="*{title}">Title Error</p>

...

<input id="location" type="text" class="form-control" th:field="*{location}" />

<p th:if="${#fields.hasErrors('location')}" th:errors="*{location}">Location Error</p>


References:

http://spring.io/guides/gs/validating-form-input/

http://beanvalidation.org/1.0/spec/

저작자 표시

Posted by izeye


티스토리 툴바