0

我有一个非服务类,其定义如下:

class A{
   B b
   A( B b ){ this.b = b }
}

其中 B 是 grails 服务。在我的单元测试中,我尝试了这个:

A a = new A( new B() );

但是,由于某种原因,b它永远不会被设置,并且在运行测试时,该变量b [local, the argument to the mehod]甚至在 Intelli-J 的调试器中都不可见。也就是说,我可以将参数重命名为service,调试器将其显示为未定义。

当我尝试启动服务器时,我得到了Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeException,所以我假设这是相关的。

这里发生了什么?

4

1 回答 1

2

这似乎是一个奇怪的场景。A在做什么?A是否真的是一种服务?

我建议将 A 设为服务,在这种情况下,您可以按照正常使用情况将 B 服务注入其中。

我不认为做'new B()'真的有效,除非B不依赖任何东西(自动装配字段)。也许将 B 注入测试会更好?

于 2011-01-31T04:18:54.587 回答