我正在使用JUnit自动执行一些检查。几乎所有人都需要用户登录。我已经有一个import React from "react";
import ReactDOM from "react-dom";
const stuff = ["one", "two", "three"];
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
isToggleOn: true
};
this.handleClick = this.handleClick.bind(this);
}
handleClick(val) {
console.log(val);
}
getStuff() {
var elements = stuff.map((value, key) => {
return (
<li key={key} onClick={() => this.handleClick(value)}>
{value}
</li>
);
});
return elements;
}
render() {
return <ul>{this.getStuff()}</ul>;
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
来执行登录操作,但是如何指示JUnit在所有其他测试之前仅执行一次该登录?
我知道可以使用@Test
,但这意味着我需要在以后的每堂课中调用它。
答案 0 :(得分:1)
JUNIT 4
您只能通过一个测试来创建父类。并从中扩展所有类。
private static final AtomicBoolean REQUIRES_LOGIN = new AtomicBoolean(true);
@Test
void setup() {
if (REQUIRES_LOGIN.getAndSet(false)) {
System.out.println("Doing login here");
}
}
JUNIT 5
您可以在以下文件中注册全局扩展。
META-INF/services/org.junit.jupiter.api.extension.Extension
demo.api.BeforeAllExtension
扩展类:
public class BeforeAllExtension implements BeforeAllCallback {
private static final AtomicBoolean REQUIRES_LOGIN = new AtomicBoolean(true);
@Override
public void beforeAll(ExtensionContext extensionContext) {
if (REQUIRES_LOGIN.getAndSet(false)) {
System.out.println("Doing login here");
}
}
}
查看如何打开扩展程序注册here