我们目前正在尝试在 Spring-MVC 中实现Togglz库。
我们目前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);
}
}
然后在我们的实际课程中:
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...
}
这里的问题是我们的切换默认为禁用,并且可以从我们的 UI 或此文件中MyFeature.java
打开/关闭。MyFeatures.java
但是......我们在测试中的切换默认为启用并使用以下任一行打开/关闭:
@Rule
public TogglzRule togglzRule = TogglzRule.allDisabled(MyFeatures.class);
或单独在每个测试中。
这至少是我们必须关闭功能的两个地方,如果我们有更多使用这些功能的测试,可能会更多,所以我的问题是:
是否可以从一个地方控制所有 Togglz 功能切换,无论它们是在代码中还是在测试中?