如何进行基础测试 class 以测试不同存储库的常用方法(如 CRUD)?
How to make a base test class for testing common methods (like CRUD) of different repositories?
如果我有 2 个存储库,比如员工和部门,它们都有共同的 CRUD 操作。有没有一种方法可以让我建立一个共同的基础 class 来测试其中的共同方法?
在我的实际代码中,我有
public interface EntityRepo<E, ID> {
E findById();
}
其实施 class:
public class EntityRepoImpl<E, ID> implements EntityRepo<E, ID>{
// method implementing findById()
}
我的其他 2 个存储库界面如下所示:
public interface EmployeeRepo extends EntityRepo<Employee, Long>{
}
public interface DepartmentRepo extends EntityRepo<Department, Long>{
}
我想使用基础测试 class 对两个存储库使用 Junit 测试 findById。我将如何做?
我同意关于“这不是单元测试的目的”等评论。但如果您仍然需要这样做,也许,您可以这样做
public abstract class BaseRepoTest <T extends EntityRepo> {
@Autowired
T repo;
@Test
public void testRepo() {
repo.findById(1L);
}
}
然后您可以创建子 class 如下所示:
public class EmployeeRepoTest extends BaseRepoTest<EmployeeRepo> {
}
和
public class DepartmentRepoTest extends BaseRepoTest<DepartmentRepo> {
}
因为他们扩展了抽象基础测试 class,测试应该是 运行 对于 2 个子classes 提供的 Repo classes.
如果我有 2 个存储库,比如员工和部门,它们都有共同的 CRUD 操作。有没有一种方法可以让我建立一个共同的基础 class 来测试其中的共同方法?
在我的实际代码中,我有
public interface EntityRepo<E, ID> {
E findById();
}
其实施 class:
public class EntityRepoImpl<E, ID> implements EntityRepo<E, ID>{
// method implementing findById()
}
我的其他 2 个存储库界面如下所示:
public interface EmployeeRepo extends EntityRepo<Employee, Long>{
}
public interface DepartmentRepo extends EntityRepo<Department, Long>{
}
我想使用基础测试 class 对两个存储库使用 Junit 测试 findById。我将如何做?
我同意关于“这不是单元测试的目的”等评论。但如果您仍然需要这样做,也许,您可以这样做
public abstract class BaseRepoTest <T extends EntityRepo> {
@Autowired
T repo;
@Test
public void testRepo() {
repo.findById(1L);
}
}
然后您可以创建子 class 如下所示:
public class EmployeeRepoTest extends BaseRepoTest<EmployeeRepo> {
}
和
public class DepartmentRepoTest extends BaseRepoTest<DepartmentRepo> {
}
因为他们扩展了抽象基础测试 class,测试应该是 运行 对于 2 个子classes 提供的 Repo classes.