gpt4 book ai didi

java - 从一个地方控制 Togglz

转载 作者:行者123 更新时间:2023-11-30 06:53:27 25 4
gpt4 key购买 nike

我们目前正在尝试实现 Togglz Spring-MVC 中的库。

我们目前通过以下方式从 MyFeatures.java 文件管理代码中的切换:

import org.togglz.core.Feature;
import org.togglz.core.annotation.EnabledByDefault;
import org.togglz.core.annotation.Label;
import org.togglz.core.context.FeatureContext;

public enum MyFeatures implements Feature {

@Label("A Feature")
MY_FEATURE;

public boolean isActive() {
return FeatureContext.getFeatureManager().isActive(this);
}
}

然后在我们的实际类(class)中:

if (MyFeatures.MY_FEATURE.isActive()) {
// some code...
}

这很有效,但我们在测试中存在缺陷,我们执行以下操作:

@Rule
public TogglzRule togglzRule = TogglzRule.allDisabled(MyFeatures.class);

// some tests, then:

if (MyFeatures.MY_FEATURE.isActive()) {
// some feature dependent test...
}

这里的问题是,MyFeature.java 中的切换默认为禁用,并且可以从我们的 UI 或在此 MyFeatures.java 文件中打开/关闭。但是...我们在测试中的切换默认为启用,并使用以下行打开/关闭:

@Rule
public TogglzRule togglzRule = TogglzRule.allDisabled(MyFeatures.class);

或在每个测试中单独进行。

这至少是我们必须关闭功能的两个地方,如果我们有更多使用这些功能的测试,可能会关闭更多地方,所以我的问题是:

是否可以从一个位置控制所有 Togglz 功能切换,无论它们是在代码中还是在测试中?

最佳答案

The issue here is that our toggles in MyFeature.java are defaulted to disabled, and toggled on/off from either our UI or within this MyFeatures.java file.

更改此文件中或 UI 中的功能状态会影响生产环境中的应用程序行为(从而影响可能的用户)。

BUT... our toggles in the tests are defaulted to enabled and toggled on/off with either the line:

更改测试中的功能状态会影响测试下的应用程序行为。

This is AT LEAST two places we have to toggle off our features, maybe more if we have more tests using those features

您所问的问题是有争议的,因为如果存在这种可能性,它将影响两个环境(测试和生产)。这一事实将导致以下结果:

  • 当您禁用某些功能时,测试开始失败,因为他们依赖此功能并尝试对其进行测试
  • 然后您将启用此功能,测试正在通过,但现在用户可能会看到尚未准备就绪的功能

因此,这种分离是出于目的而存在的,从两个不同的地方管理功能状态实际上是一个功能,而不是一个错误。

我听说的另一个想法是,在大多数情况下,您不应该测试禁用功能时的情况,因为这种状态应该是暂时的,并且不值得维护所有可能情况的测试。

关于java - 从一个地方控制 Togglz,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42272833/

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