JMockit 用于非自动装配字段的 @Injectable
JMockit's @Injectable for non-Autowired fields
我有一个 class,其中有些字段是 @Autowired
而有些不是,在测试中 class 我想自动注入值不仅是为了 @Autowired
字段。但自动注入仅发生在 @Autowired
字段。
这是一个例子:
public class SimpleObject {
Long id;
@Autowired UsersDAO usersDAO;
}
public class SimpleTest {
@Tested SimpleObject testedSimpleObject;
@Injectable @Mocked UsersDAO usersDAO;
@Injectable Long id = new Long(200);
@Test
public void testId() {
assertNotNull(testedSimpleObject);
assertNotNull(testedSimpleObject.id);
}
}
测试将在第二行失败。 id 字段不是自动注入的。
但是,如果我从 UsersDAO
中删除 @Autowired
注释,则测试通过。
为什么会这样?
我该如何克服这个问题?
我知道我可以在 id 字段上添加一些其他注释,但如果可能的话,我想在不更改原始源代码的情况下解决它。
这是由于 JMockit 1.14 中的一个错误,但它已在下一个版本 1.15 中修复(稍后将在 Feb/2015 发布)。
我有一个 class,其中有些字段是 @Autowired
而有些不是,在测试中 class 我想自动注入值不仅是为了 @Autowired
字段。但自动注入仅发生在 @Autowired
字段。
这是一个例子:
public class SimpleObject {
Long id;
@Autowired UsersDAO usersDAO;
}
public class SimpleTest {
@Tested SimpleObject testedSimpleObject;
@Injectable @Mocked UsersDAO usersDAO;
@Injectable Long id = new Long(200);
@Test
public void testId() {
assertNotNull(testedSimpleObject);
assertNotNull(testedSimpleObject.id);
}
}
测试将在第二行失败。 id 字段不是自动注入的。
但是,如果我从 UsersDAO
中删除 @Autowired
注释,则测试通过。
为什么会这样? 我该如何克服这个问题? 我知道我可以在 id 字段上添加一些其他注释,但如果可能的话,我想在不更改原始源代码的情况下解决它。
这是由于 JMockit 1.14 中的一个错误,但它已在下一个版本 1.15 中修复(稍后将在 Feb/2015 发布)。