【问题标题】:Why field hasn't updated in second method?为什么字段没有在第二种方法中更新?
【发布时间】:2021-10-13 07:06:16
【问题描述】:

我在下面创建了一个简单的代码来测试 spark 框架。

import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;

import static spark.Spark.post;

public class TestExample {

private boolean flag = false;

@BeforeClass
private void  caseOne(){
    post("/cres/", (req, res) -> {
        flag = true;
        return  res.body();});

}

@Test
private void caseTwo(){
    while (true){
        if(flag == true){
            System.out.println("Finished!");
            break;
        }
    }
}

}

我不明白为什么caseTwo 方法中的字段flag 不正确? 如何解决?

【问题讨论】:

  • 您的测试以什么顺序运行?另外flag == true 是多余的,可以是if (flag)
  • 我有一个简单的测试。我需要检查来自客户端的请求是否到达我的 spark 服务器。问题是运行最后一个方法后,服务器停止了,不知道怎么不停止。

标签: java apache-spark web server testng


【解决方案1】:

为什么在第二种方法中字段没有更新?

它应该更新到什么?为什么?您编写的任何代码都不起作用?

每次@Test 方法被测试运行程序调用时,都会实例化一个独特的封闭夹具(在您的情况下为TestExample)的新实例。

您已对 flag 成员进行硬编码内联初始化,并且每个新实例都将其初始化为 false

【讨论】:

  • 为什么测试后服务器停止了?如何避免?
  • 为什么服务器在测试后停止?如何避免它?” - 这是另一个与 @Test 方法的运行方式没有明显关系的问题JUnit。提供日志、堆栈跟踪以及您认为对于查找导致服务器停止的问题很重要的任何内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
相关资源
最近更新 更多