我有一项包含其他服务列表的服务
public class MyFrontService {
@Autowired
private Set<? extends MyAbstractService> allMyServices;
}
,它将运行集合中的所有服务。这是MyAbstractService的签名
public abstract class MyAbstractService {
boolean myMethod();
}
如果allMyServices中的任何服务返回false,则myFrontService返回false;否则,返回false。仅当其所有服务都返回true时,它才会返回true。
我想知道如何使用Java 8方法对MyFrontService进行单元测试。理想情况下,我可以在集合中指定许多服务以返回true,而其他服务则返回false。
任何帮助/提示都将受到感激
答案 0 :(得分:0)
这不是特定于Java 8的,但是您可以在测试框架内创建扩展MyAbstractService的“伪”测试服务类,每个类确定地成功或失败。在这些测试类中,您可以重写方法以产生MyFrontService将检查的特定结果。
答案 1 :(得分:0)
您可以在测试类中为服务使用Mockito,也许可以尝试:
def build_all_dataset(self):
self.build_dataset(ROUTE_TRAIN)
self.build_dataset(ROUTE_VALIDATION)
self.build_dataset(ROUTE_TEST)
def build_dataset(self, p_route):
# Create dataset instance.
# ......
# ......
self.dataset[p_route] = dataset
self.iterators[p_route] = dataset.make_initializable_iterator()
self.handles[p_route] = (self.iterators[p_route].string_handle()).eval()
def build_model(self):
with tf.device("/GPU:0"):
# Build dataset for training/validation/test.
self.build_all_dataset()
self.ph_dataset_handle = tf.placeholder(tf.string, shape=[])
iterator = tf.data.Iterator.from_string_handle(self.ph_dataset_handle, self.dataset[ROUTE_TRAIN].output_types,
self.dataset[ROUTE_TRAIN].output_shapes)
xxx, xxx, xxx = iterator.get_next()
# Build the following graph.
# ......
# ......
while True:
try:
session.run(xxx, {self.ph_dataset_handle: self.handles[ROUTE_TRAIN]})
except tf.errors.OutOfRangeError:
break
例如,您创建Mocks(空对象,具有与创建它的类相同的功能和属性,但是除非您添加“ when”,否则什么都不做),并使用定义的“ when”,每次调用该对象的myMethod(),它将返回您在when()的thenReturn()中编写的内容。因此,每次为嘲笑AbstractService1调用myMethod()时,它将返回true,而嘲笑嘲笑的myMethod返回False。