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