gpt4 book ai didi

java - 有没有办法替换 groovy/java 中的类扩展?

转载 作者:行者123 更新时间:2023-12-02 02:15:22 24 4
gpt4 key购买 nike

我的应用程序是一个用 groovy/java 编写的自动化测试框架。目前我有两种用法:1)我的所有测试类都从 BaseTest 类扩展,该类读取属性,执行一些其他工作,例如设置和清理,但主要是启动要测试的主应用程序工作的 SpringBoot 上下文。它很完美,但是每次我运行任何测试时 - Spring 都会首先启动,这会占用我一分钟的时间。2)我有另一个类从称为 ProxyBaseTest 类扩展,该类创建主应用程序正在运行的实例的代理(如果我在单独的窗口中使用 gradle 手动启动它)。效果也不错。

对我来说主要的问题是一直更换

class SomeTestClass extends BaseTest {

class SomeTestClass extends ProxyBaseTest {

反之亦然。

有没有办法做这样的事情:

类 SomeTestClass 扩展 A {....}

 Class A {
....
if(applicationIsRunning){
// use/return/extend/replace/??? from ProxyBaseTest
}else{
// use/return/extend/replace/??? from BaseTest
}
}

我无法合并 BaseTest 和 ProxyBaseTest 因为 BaseTest 使用 springbeans、spring 上下文、注释等...如果我能够合并它 - 它会让任何人生气。

最佳答案

3种不同的方法来做到这一点。要寻找的关键词是:

  • 注释:不要从基测试类派生子类。而是对类进行注释。例如。 jUnit 从子类化到注释。

  • 委托(delegate):您的基类A是一个示例,其中use/return/extend/replace/???是对实际执行工作的类的方法调用。

  • 组合:代码不应从 Test 类中派生子类,而是应获取对适当测试类的引用并将其存储为字段,以便您可以调用任何你需要的方法。然后,两个测试类实现应该实现一个公共(public)接口(interface),即字段的类型。

关于java - 有没有办法替换 groovy/java 中的类扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57306764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com