所以目前我有一个弹簧单元测试应用程序。它要求我从外部身份验证源获取会话 cookie。问题是什么,这个身份验证过程相当昂贵且耗时,我正在尝试创建一个结构,我在其中通过任何子类进行一次身份验证,并创建任何后续子类,它将重用此会话 cookie 而不会命中身份验证再次处理。
我现在的问题是,每次创建另一个子类时,静态 cookie 都是空的。而且我一直在阅读使用静态作为全局变量是一个坏主意,但是我想不出另一种方法来做到这一点,因为 Spring 框架在运行时设置了一些东西,以及我将如何设置 cookie 以便所有其他类可以用它。
另一条信息。该变量正在使用,但在运行时可以更改。它不是一个单一的用户被全面登录和使用。但更像是 Sub1 会调用登录,并且我们有一个 cookie。然后多个测试将使用该登录名,直到 SubX 进来并说,我正在使用不同的凭据,所以我需要以其他身份登录。并重复。
这是我的代码的大纲:
public class Parent implements InitializingBean {
protected static String BASE_URL;
public static Cookie cookie;
... All default InitializingBean methods ...
afterPropertiesSet() {
cookie = // login process returns a cookie
}
}
public class Sub1 extends Parent {
@resource public String baseURL;
@PostConstruct
public void init() {
// set parents with my baseURL;
BASE_URL = baseURL;
}
public void doSomething() {
// Do something with cookie, because it should have been set by parent class
}
}
public class Sub2 extends Parent {
@resource public String baseURL;
@PostConstruct
public void init() {
// set parents with my baseURL;
BASE_URL = baseURL;
}
public void doSomethingElse() {
// Do something with cookie, because it should have been set by parent class
}
}