1
我在使用SPOCK编写测试用例时遇到了问题。任何人都可以帮我吗?如何使用@Autowired变量为继承类编写测试类
我有类,如下面&接口,
//Helper class
public class ObjClass{
//Defining all property variables & corresponding getters & setters methods.
}
//Interface
public interface B{
//Declaring custom methods for Mongo repository.
public int getId();
}
public interface A extends MongoRepository<ObjClass, Serializable>, B{
//Defining some standard MongoRepository methods here
}
// Implementation Classes
public class Aimpl implements B{
//implementing all B interface methods
}
public class ctrlClass{
@Autowired
A aObj;
public int getIdValue(){
return aObj.getId();
}
}
并且在下面相应的SPOCK测试用例:
class test extends Specification
{
ctrlClass obj1
A obj2 //interface class object
def setup(){
obj1 = new ctrlClass();
obj2 = new Aimpl(); //Creating object for interface using impl class.
obj1.aObj = obj2
}
def "test"(){
when:
def a = obj2.getIdValue()
then:
//validating some conditions here with 'a' value
}
}
获得以下错误而上述测试情况下执行,
无法将对象Aimpl投射到A级。
以上情况与Spring @Autowired正常工作。但不是在Spock中。
*
是否有可用SPOCK任何备用的@Autowired?请给我建议一些解决方案&您的意见。
*
如果我像这样改变, 'public class ctrlClass { @Autowired Aimpl aObj; public int getIdValue(){ return aObj.getId(); } }' 我将无法使用接口A的方法吗? 注意: 但在我目前的继承结构中,我可以使用A和B的接口方法。 –