gpt4 book ai didi

java - 我怎样才能在我的 TestSuite 界面中拥有 junit @Beforeclass && @Afterclass ?

转载 作者:行者123 更新时间:2023-12-02 12:06:37 25 4
gpt4 key购买 nike

问题:我有一个 TestSuite 的自定义接口(interface)。

public interface TestSuite {

abstract void setupRestAssuredForSuite();
abstract void restoreDatabase();
abstract void executeSuitePreparation();
abstract void executeSuiteTearDown();

}

如何让我的接口(interface)包含来自 junit 的 @BeforeClass 和 @AfterClass 注释以及我的 TestSuite 接口(interface)的实现来确认这些注释?我应该完全以另一种方式做这件事吗?我很想知道接口(interface)是否可以实现这样的事情。

我需要在每个实现 TestSuite 的类中手动编写注释吗?或者我可以让 executeSuitePreparation();executeSuiteTearDown(); 方法在没有注释的情况下运行,因为它们以某种方式存在于 TestSuite 本身中,我只需要实现设置背后的代码/拆解。

public class Foo extends Bar implements TestSuite

据我所知,@Beforeclass 和 @Afterclass 方法必须是静态的。

这是处理这种情况的愚蠢方法吗?如果是这种情况,您能否推荐一种不同的方法。

最佳答案

您正在尝试将接口(interface)用作 mixin。接口(interface)不是 mixin。

您能做的最好的事情可能就是在界面中编写静态方法来执行所需的设置:

public interface TestSuite {

abstract void setupRestAssuredForSuite();
...


static SomeReturn setup()
{
Database database = new Database();
...
return database;
}

static void teardown(SomeType foo)
{
foo.reset();
}
}

然后在您的具体实现中您可以执行以下操作:

public class Foo extends Bar implements TestSuite
{
private static Foo foo;

@BeforeClass
public void beforeClass()
{
foo = TestSuite.setup();
}

@BeforeClass
public void beforeClass()
{
TestSuite.teardown(foo);
}
}

强烈鼓励您重新考虑是否需要在测试中使用继承。对我来说,这似乎是一种代码味道,表明您的测试可能不够集中。

关于java - 我怎样才能在我的 TestSuite 界面中拥有 junit @Beforeclass && @Afterclass ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46873215/

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