我们目前正在尝试在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...
}这里的问题是,我们在MyFeature.java中的切换默认情况下是禁用的,并且可以从我们的UI或此MyFeatures.java文件中打开/关闭。但是..。我们在测试中的切换默认情况下是启用的,并使用以下两行之一打开/关闭:
@Rule
public TogglzRule togglzRule = TogglzRule.allDisabled(MyFeatures.class);或在每项测试中单独执行。
这至少有两个地方我们必须关闭我们的功能,如果我们有更多的测试使用这些功能,可能会更多,所以我的问题是:
有没有可能从一个地方控制所有的Togglz特性切换,不管它们是在代码中还是在测试中?
发布于 2017-02-17 00:07:21
这里的问题是,我们在MyFeature.java中的切换默认为禁用,并从我们的UI或此MyFeatures.java文件中切换开/关。
更改此文件中的功能状态或更改UI中的功能状态会影响生产环境中的应用程序行为(从而影响可能的用户)。
但是...我们在测试中的切换默认情况下是启用的,并使用以下两行之一打开/关闭:
更改测试中的功能状态会影响测试下的应用程序行为。
这至少有两个地方我们必须关闭我们的功能,如果我们有更多的测试使用这些功能,可能会更多
您的问题是有争议的,因为如果存在这种可能性,它将影响两个环境(测试和生产)。这一事实将导致以下结果:
因此,这种分离的存在是为了达到这个目的,从两个不同的地方管理功能状态实际上是一个功能,而不是一个bug。
我听说的另一个想法是,在大多数情况下,当特性被禁用时,你不应该测试用例,因为这种状态应该是暂时的,不值得花费精力维护所有可能的用例的测试。
https://stackoverflow.com/questions/42272833
复制相似问题