【发布时间】:2016-12-05 11:44:18
【问题描述】:
我正在学习使用 TestNg 进行单元测试。我想将变量“val”的唯一值传递给线程池中的每个线程,但它没有拾取它。
这里是 testng 类:
public class NewTest {
int val = 0;
/*@Test(dataProvider = "dp")
public void f(Integer n, String s) {
}*/
@BeforeMethod
public void beforeMethod() {
long id = Thread.currentThread().getId();
System.out.println("beforeMethod. Thread id is: " + id);
}
@AfterMethod
public void afterMethod() {/*
long id = Thread.currentThread().getId();
System.out.println("After test-method. Thread id is: " + id);*/
}
@DataProvider
public Object[][] dp() {
return new Object[][] {
new Object[] { 1, "a" },
new Object[] { 2, "b" },
};
}
@BeforeClass
public void beforeClass() {
}
@AfterClass
public void afterClass() {
}
@BeforeTest
public void beforeTest() {
val++;
}
@AfterTest
public void afterTest() {
}
@BeforeSuite
public void beforeSuite() {
}
@AfterSuite
public void afterSuite() {
}
@Test(threadPoolSize = 5, invocationCount = 5, timeOut = 1000)
public void methodOne(){
System.out.println("Value of val from MethodOne::"+val);
}
}
和输出:
[ThreadUtil] 启动执行器timeOut:1000ms workers:5 threadPoolSize:5 beforeMethod。线程 id 为:15 beforeMethod。线 id 是:12 beforeMethod。线程 id 为:14 beforeMethod。线程 ID 为: 13 之前的方法。线程 id 是:16 来自 MethodOne::1 值的 val 值 MethodOne::1 中的 val 值 MethodOne::1 中的 val 值 来自 MethodOne::1 val 的值来自 MethodOne::1 PASSED: methodOne 通过:methodOne 通过:methodOne 通过:methodOne 通过: 方法一
================================================ 默认测试
测试运行:5,失败:0,跳过:0
================================================默认套件总测试运行:5,失败:0,跳过:0
[TestNG] [FailedReporter pass=0 failed=0 skipped=0] 花费的时间:1 ms [TestNG] 所用时间 org.testng.reporters.SuiteHTMLReporter@3159c4b8:50 毫秒 [TestNG] 时间 由 org.testng.reporters.JUnitReportReporter@6adede5 拍摄:7 毫秒 [TestNG] org.testng.reporters.XMLReporter@64bf3bbf 花费的时间:9 毫秒 [TestNG] org.testng.reporters.jq.Main@1d16f93d 花费的时间:40 毫秒 [TestNG] 所用时间 org.testng.reporters.EmailableReporter2@5bc79255:4 毫秒
【问题讨论】: