java - 为什么 testng 将属性 a 分配给相同的地址?
问题描述
有 2 个类,Base.java 和 Demo.java。
public class Base {
public A a;
@BeforeMethod
public void beforeMethod() {
a = new A();
System.out.println(Thread.currentThread().getName() + " a -------" + a);
}
}
以下是Demo.java
public class Demo extends Base {
@Test
public void test(){
System.out.println("11111111111");
}
@Test
public void test2(){
System.out.println("2222222222");
}
}
以下是我的xml:
<suite name="Integration" parallel="methods" thread-count="2">
<test name="1">
<classes>
<class name="example.Demo"/>
</classes>
</test>
</suite>
当我键入命令时:
mvn clean test
输出如下:
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running TestSuite
TestNG-test=1-2 a -------example.A@18e702c8
TestNG-test=1-1 a -------example.A@18e702c8
2222222222
11111111111
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.278 sec
我们可以看到有 2 个线程:TestNG-test=1-2
和TestNG-test=1-1
,但是为什么 2 个不同线程中的变量“a”具有相同的地址“example.A@18e702c8”?
我认为beforeMethod()
在 Base.java 中会被调用 2 次,因为 Demo.java 中有两个方法,所以变量“a”应该有 2 个不同的独立值。
但实际上,它并没有像我想象的那样执行。有人可以帮忙解决吗?
解决方案
推荐阅读
- memory-leaks - 为什么在一个简单的 OCaml 程序中 valgrind 会出现内存泄漏?
- java - 不好:Java 反混淆堆栈跟踪
- javascript - React:在父构造函数中将子组件存储为 this.child - 这是一个坏主意吗?
- material-design-in-xaml - material-design-in-xaml 中 ComboBox 样式的问题
- python - 脚本在 Pycharm 中运行,但在没有退出代码的情况下完成
- apk - 如何使用 Tizen Studio 将 APK 转换为 TPK
- javascript - Javascript:您将如何创建一个可以通过沿轴滑动节点来修改的 blob
- arrays - Laravel 雄辩,其中定义的值介于数据库中的 json 范围值之间
- php - 搜索栏的多个字段不起作用
- reactjs - 我应该通过 Id 从 API 获取还是过滤获取的数据