在所有其他测试之前运行一次特定的JUnit测试

时间:2018-06-21 10:20:36

标签: junit

我正在使用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,但这意味着我需要在以后的每堂课中调用它。

1 个答案:

答案 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