0
莫克下列情况下,我有下面的类如何使用PowerMock或Easy模拟或或的Mockito所有
public class TestClass{
ParamObject paramObject = null;
public TestClass(ParamObject paramObject){
this.paramObject = paramObject;
}
public String getQuery(String field){
String sql = field + "sometext" + getName();
}
private String getName(){
SomeObject obj = new SomeObject();
return obj.getName();
}
}
我想嘲笑类的上面GetName方法。构造函数参数在Test类中可用。我该怎么做呢。
@Test(groups = { "UNIT", "CS_RAJAN" })
public void TestClass_Unit_Test() throws Exception {
ParamObject paramObject = get();//some param object
//some way to pass the paramObject to the class and mock the getName() method so that it returns "ABC"
}
如果这是你的整个班级,那么问题应该是你为什么要测试它?这是一个永远不会被调用的私有方法。不过,我会说你不应该测试私有方法 - 它们定义了你的类是如何实现的,而不是它的行为方式。你应该针对你对行为进行测试,因为实现可能会随着时间的推移而变化(并且你的测试会因为没有正当理由而开始失败) – DaveH
在我看来,你实际上想要做的就是创建'SomeObject',这样你可以使用一个虚拟的“SomeObject”来测试它的“名字”是否已知。如果您可以确认这会满足您的需求,我会发布详细的答案,介绍如何做到这一点。 –
其实我想测试公共方法getQuery(String field)。我想嘲笑私有方法返回一个文本(比如“ABC”),这样当我调用getQuery(“Hello”)时,我想在测试方法上收到“HellosometextABC”。 SomeObject是从应用程序浏览时正确初始化的Context对象。这是我想测试的复制场景,我确定它是。 – Rajan