@ExtendWith(MyExtension.class)
public class MyTestClass {
@Test myTest1() {}
@Test myTest2() {}
// ...
}
public interface SomeInterface {
SomeClient getSomeClient();
SomeClient getSomeClientAsAdministrator();
}
@ExtendWith(MyExtension.class)
public class MyTestClass implements SomeInterface {
@Test myTest1() {}
@Test myTest2() {}
// ...
SomeClient getSomeClient() {
// ...
}
SomeClient getSomeClientAsAdministrator() {
// ...
}
}
但是现在,我希望这些接口实现也可用于扩展,例如。
public class MyExtension implements BeforeEachCallback, SomeInterface
{
@Override
public void beforeAll(ExtensionContext extensionContext) {
// be able to use getSomeClient();
}
}
我如何设置我的课程来实现这一点?(或者,反对这样做的固有缺陷或代码气味是什么?)
实现这一目标的一种方法是在上下文对象上使用getTestInstance()
:
public class MyExtension implements BeforeEachCallback {
@Override
public void beforeEach(ExtensionContext context) throws Exception {
context.getTestInstance().ifPresent(instance -> {
if (instance instanceof SomeInterface) {
SomeInterface some = (SomeInterface) instance;
System.out.println(some.getSomeClient());
}
});
}
}
你在这里可以看到两件事:
beforeallcallback
中,因为测试实例通常是每个测试创建的。SomeInterface
SPI 扩展接口仅用于系统集成,或 Contributor 扩展功能插件。
问题内容: 为了减少类的依赖性,我想将参数(使用泛型类)发送到扩展某些类并实现接口的构造函数,例如 可能吗? 此外,使用T类,我想使用T.getActivity()作为Context创建视图。 问题答案: T必须扩展Fragment并实现SomeInterface 在这种情况下,您可以声明以下内容: 这将需要扩展和实现类型的对象。 此外,使用T类,我想使用T.getActivity()作为Cont
本文向大家介绍Django DRF路由与扩展功能的实现,包括了Django DRF路由与扩展功能的实现的使用技巧和注意事项,需要的朋友参考一下 一. 视图集与路由的使用 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update() 保存数据 destory() 删除数据 ViewSe
我希望有一个方法返回一个类 ,该类根据作业类型具有不同的方法。 例如,作业类型可以是 或 。它们不共享方法,但需要从单个方法getJob()中获取它们。 现在我有一个普通的类< code>job,它的方法返回< code>null,没有构造函数,因为我在< code>getJob()方法中构造了其他类(例如BackupJob或RunCommandJob)。 在返回单个类的同时获得不同工作类的最佳方
问题内容: 我有以下类和接口: 我想创建一个方法,其中参数需要为BasicObject类型并实现CodeObject。我尝试了以下代码,但不能保证clazz是实现CodeObject的类。 我想做这样的事情,但不能编译: 问题答案: 您的模式类必须扩展和扩展/实现(实际上是一个接口)。您可以使用方法签名的通配符定义中声明的多个类来执行此操作,如下所示: 请注意,如果您通过以下任何一种方式进行操作,
我有以下类和接口: 我想创建一个方法,其中参数需要是BasicObject类型,并实现CodeObject。我尝试了以下代码,但它不能保证clazz是一个实现CodeObject的类。 我想做这样的事情,但它无法编译: