2017-09-20 26 views
1

初めてEasyMockとSpringを併用すると、 私はテストクラスがあります。擬似メソッド呼び出し時にSpring EasyMockがnullになる

@RunWith(EasyMockRunner.class) 
public class ProjectServiceTest { 

    @Mock 
    private ProjectRepository projectRepositoryMock; 

    @TestSubject 
    private ProjectService service new ProjectService(); 

    @Before 
    public void setUp() throws Exception { 
     Project project = new Project("Project"); 

     EasyMock.expect(projectRepositoryMock.findOne(1)).andReturn(project); 
    } 

    @After 
    public void tearDown() throws Exception { 
    } 

    @Test 
    public void getProjectById() throws Exception { 
     System.out.println(this.service.getProjectById(1); 
    } 

は、これは私のプロジェクトの実体である:

@Entity 
@Table(name = "Project") 
public class Project { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Integer id; 

    private String projectName; 


    public Project(){ 

    } 

    public Project(String projectName) { 
     this.projectNaam = projectName; 
    } 

また、通常のゲッターとセッターを持っています。 私のリポジトリはJpaRepositoryを拡張するだけです。 は、そしてこれは、私が起こっていただきまし把握するのSystem.out.printlnを使用する理由ようだ私のテストが失敗した

@Service 
public class ProjectService { 

    @Autowired 
    private ProjectRepository projectRepository; 

    public ProjectService(){ 

    } 

    public Project getProjectById(Integer id){ 
     return this.projectRepository.findOne(id); 
    } 

    public void saveProject(Project project){ 
     this.projectRepository.save(project); 
    } 

    public void deleteProject(Integer id){ 
     this.projectRepository.delete(id); 
    } 

    public List<Project> getAllProjects(){ 
     return this.projectRepository.findAll(); 
    } 

    public Project findProjectById(Integer id){ 
     return this.projectRepository.findOne(id); 
    } 
} 

私ProjectServiceクラスです。それは:nullを印刷します。

私はこれを理解していません。 @Mockと@TestSubjectは、私がサービスをテストして、リポジトリを模擬したいので、良いと思われます。 代わりの

System.out.println(this.service.getProjectById(1); 

私は

System.out.println(this.projectRepositoryMock.findOne(1)); 

を試してみました。しかし、これはまた、nullを返します。

+0

「@ Before」が実行されているかどうかを確認しましたか?たぶんそれはjunit '@ Before'ではなく、スキップされるかもしれません。 –

答えて

0

モックを再生モードにする必要があります。試してみてください。

@Before 
public void setUp() throws Exception { 
    Project project = new Project("Project"); 

    EasyMock.expect(projectRepositoryMock.findOne(1)).andReturn(project); 
    EasyMock.replay(projectRepositoryMock); 
} 
関連する問題