したがって、単体テストを実行したい以下のメソッドがあります。
public List<Project> getProjects(Task task) {
Criteria<Project> criteria = this.myRepository.getCriteria(Project.class);
criteria.add(Comparison.eq("order", task.getOrder()));
criteria.addOrder(Order.asc("projectNumber"));
return this.myRepository.findList(Project.class, criteria);
}
したがって、実際にはタスクオブジェクト(JPAモデルオブジェクトです)を取得し、プロジェクトテーブルをスローして、このプロジェクトの注文を持つすべてのプロジェクトを見つけます。順序は両方の表で共通です。
とにかく、クエリ自体はそれほどインプではありません。db にクエリを実行し、いくつかのデータを返します。さて、私の問題は、easymock を使用してこれに対して単体テストを実行するにはどうすればよいですか?
@Test
public void testGetProjects() throws Exception {
myRepository = new CreateMyRepositoryWrapper(); --> This is a class which just returns the entityManger. but here we can consider this as a pojo.
Task task = EasyMock.createNiceMock(Task.class);
Order bom = EasyMock.createNiceMock(Order.class);
Project project= EasyMock.createNiceMock(Project.class);
project.setProjectName("project"); ------> Can I call a seeter on a mocked object?
project.setProjectNumber("1");
EasyMock.replay(project);
List projects= new ArrayList(Arrays.asList(project));
bom.setProjects(projects); ------------> Does it make sense to do this?
EasyMock.expect(task.getOrders()).andReturn(bom);
TestClass instance = new TestClass();
instance.setMyRepository(myRepository);
EasyMock.replay(task,bom);
instance.getProjects(task);
}
したがって、これはテストケースに合格します。しかし、私が実際にテストしていることを嘲笑しているすべての人に確信が持てません..それらのメソッドが呼び出されていることを示しているだけだからです。しかし、それらは嘲笑されているため、 assertEquals を使用できるかどうかはわかりません。使用できる場合でも、上記のコードにさらに追加する必要があるため、例外が発生しています。
だから私の質問:言及された方法について、適切な単体テストケースは何ですか?
ありがとう。