假设我有一个名为Foo
的实体id
和name
(简化了类):
public class Foo {
private long id;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getId() {
return id;
}
}
在我的应用程序中,我不希望手动设置id
。因为foo
只会来自DB。所以我没有为它创建一个setter。
现在我想要JUnit测试一些我希望实例化foo
的方法。是否有可能仅为JUnit测试设置id
P.S。:一种可能的解决方案是首先从数据库接收foo
并进行测试。但是想避免DB调用。如果有必要,我会使用Spring
和jpa
。
答案 0 :(得分:1)
感谢JS Bin Demonstration。简单而完美的解决方案是使用ReflectionTestUtils
。
@Test
public void testFoo() {
Foo foo = new Foo();
ReflectionTestUtils.setField(foo, "id", 1L);
// assertion
}
请注意:ReflectionTestUtils
来自Spring:org.springframework.test.util.ReflectionTestUtils