以下是设置:
public class ClassToTest{
public void doSomething(ObjectToWorkOn[] objects){
doPrivateStuff(objects);
}
private void doPrivateStuff(ObjectToWorkOn[] objects){
List<ObjectToWorkOn> validObjects=new ArrayList<ObjectToWorkOn>();
for(ObjectToWorkOn obj:objects){
if(obj.isValid())
validObjects.add(obj);
}
SomeWebService ws=new SomeWebService();
ws.processObjects(validObjects);
}
}
我需要测试公共doSomething
方法,以检查是否筛选了invalidObjects。如您所见,它将对象
传递给私有的DoprivateStuff
方法。该方法过滤掉无效的对象,并将有效的对象发送给web服务方法。该web服务方法不返回任何内容。因此,我不知道是否只有有效的对象被发送到web服务方法。你建议我怎么做才能检验这个案子?我正在使用Mockito框架来模拟对象。
不能测试此方法的主要原因是,您在类中创建了SomeWebService
。
要解决这个问题,您应该插入SomeWebService
。
public class ClassToTest{
private readonly ISomeWebService someWebService;
public ClassToTest(ISomeWebService someWebService)
{
this.someWebService = someWebService;
}
public void doSomething(ObjectToWorkOn[] objects){
doPrivateStuff(objects);
}
private void doPrivateStuff(ObjectToWorkOn[] objects){
List<ObjectToWorkOn> validObjects=new ArrayList<ObjectToWorkOn>();
for(ObjectToWorkOn obj:objects){
if(obj.isValid())
validObjects.add(obj);
}
someWebService.processObjects(validObjects);
}
}
现在,您可以在测试和验证processObjects
方法是否使用正确的参数调用ISOMEWebService
中模拟您的ISOMEWebService
依赖项
我需要一些软件测试方面的指导。 我把事情复杂化了,但我太专注了,看不到我做错了什么,也看不到其他做事方式。 我有几个公共方法使用相同的私有方法。 私有方法本身: 必须为其特定角色处理许多场景 假设私有方法需要5个测试来覆盖所有场景,并由6个公共方法使用。 问题 > 然后我是否需要至少5x6个测试? 如何对每个公共方法重复使用私有方法的测试? 有没有关于重构重复测试的示例/文章? 示例 OnStar
在我们的ASP。Net核心应用程序,我们有许多API从服务类调用公共方法。 服务类正在实现一个接口。 每个服务方法(取决于复杂性和需求)可以调用任意数量的内部或私有或辅助方法。 虽然这些内部/私有/或辅助方法中的每一个都单独进行单元测试,但我们如何以这样一种方式测试公共服务方法,即我们不必重复已经在测试内部/私有/辅助方法中花费的代码/精力? e、 我们可以很容易地模拟接口方法,说接口方法需要这些
我陷入了单元测试场景的一个基本问题,并将感谢帮助。 我有一个类,它调用在DB中将标志设置为true。 我的测试: 我被要求测试并检查是否正在使用相关数据调用。 由于返回类型无效,我如何测试它?
我有一个类,它有一个公共方法,它调用另一个私有方法。 通过调用公共方法 并将 设置为 来进行测试。 将更改为package-private并在测试中直接调用它。 然而,我不确定哪种方法更好。
我是单元测试的新手,最近尝试了JUnit测试和Mockito。 我很困惑我该如何测试公共功能。
我不熟悉单元测试。参考google之后,我创建了一个测试类来测试我的控制器,如下所示: 我有以下控制器和服务类: 当我调试单元测试时,控制器中的p对象为null。我的状态是200,但不是预期的JSON响应 我错过了什么?