Java 为什么';在数据驱动测试中,每次测试后是否打印testNG断言消息?
我正在运行从电子表格驱动的数据驱动测试,该电子表格被输入到TestNG测试框架。简而言之,该框架遍历outlook邮箱并查找基于主题的邮件。电子表格中的每一行都是邮件主题,它是测试的输入Java 为什么';在数据驱动测试中,每次测试后是否打印testNG断言消息?,java,unit-testing,testng,testng-dataprovider,Java,Unit Testing,Testng,Testng Dataprovider,我正在运行从电子表格驱动的数据驱动测试,该电子表格被输入到TestNG测试框架。简而言之,该框架遍历outlook邮箱并查找基于主题的邮件。电子表格中的每一行都是邮件主题,它是测试的输入 String comparisonResult = GetMail.compareMails(scenarioName); Assert.assertNotNull(comparisonResult,"Mail does not exist"); 在引擎盖下,comparemails方法将作为参数传递
String comparisonResult = GetMail.compareMails(scenarioName);
Assert.assertNotNull(comparisonResult,"Mail does not exist");
在引擎盖下,comparemails
方法将作为参数传递的邮件的主题与该方法进行比较,并在邮箱中查找该邮件
当邮件不存在时,我断言为空值,并使用断言消息“邮箱中不存在邮件”进行报告。但是,在每次测试失败后,断言消息不会显示,而是在所有测试运行结束时(即,在处理电子表格的所有行之后)报告
当断言失败时,我希望它立即在控制台上打印断言消息,并处理电子表格中的下一个测试
但是,它会在测试结束时立即打印消息,如下所示,假设有5次失败:
[name=null](com.dms.testsuite.Test) Time elapsed: 66.905 sec <<< FAILURE!
java.lang.AssertionError: Mail does not exist expected object to not be null
at org.testng.Assert.fail(Assert.java:94)
at org.testng.Assert.assertNotNull(Assert.java:404)
at com.dms.testsuite.Test.submitJob(Test.java:110)
[name=null](com.dms.testsuite.Test) Time elapsed: 83.24 sec <<< FAILURE!
java.lang.AssertionError: Mail does not exist expected object to not be null
at org.testng.Assert.fail(Assert.java:94)
at org.testng.Assert.assertNotNull(Assert.java:404)
at com.dms.testsuite.Test.submitJob(Test.java:110)
[name=null](com.dms.testsuite.Test) Time elapsed: 51.064 sec <<< FAILURE!
java.lang.AssertionError: Mail does not exist expected object to not be null
at org.testng.Assert.fail(Assert.java:94)
at org.testng.Assert.assertNotNull(Assert.java:404)
at com.dms.testsuite.Test.submitJob(Test.java:110)
[name=null](com.dms.testsuite.Test) Time elapsed: 51.735 sec <<< FAILURE!
java.lang.AssertionError: Mail does not exist expected object to not be null
at org.testng.Assert.fail(Assert.java:94)
at org.testng.Assert.assertNotNull(Assert.java:404)
at com.dms.testsuite.Test.submitJob(Test.java:110)
[name=null](com.dms.testsuite.Test) Time elapsed: 67.177 sec <<< FAILURE!
java.lang.AssertionError: Mail does not exist expected object to not be null
at org.testng.Assert.fail(Assert.java:94)
at org.testng.Assert.assertNotNull(Assert.java:404)
at com.dms.testsuite.Test.submitJob(Test.java:110)
编辑:添加类别代码:
public class SubmitJobTest extends BaseClass implements ITest {
private String name;
@BeforeSuite
public void generateXML() {
try {
XMLGenerator.mapper();
} catch (ValidityException e) {
e.printStackTrace();
} catch (ParsingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test(dataProvider = "files", dataProviderClass = FolderReader.class)
public void submitJob(final String name) throws Exception {
final SubmitJobEndpoint submitJobObj = new SubmitJobEndpoint();
String submitJobId = null;
try {
final BaseClass obj = new BaseClass();
obj.getPropValues();
submitJobId = submitJobObj.submitJob(name.toString(), BaseClass.queue,
BaseClass.config, BaseClass.type);
System.out.println("Job Id : " + submitJobId);
Assert.assertNotNull(submitJobId, "Job creation failed");
} catch (final InvalidKeyException e) {
e.printStackTrace();
} catch (final NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (final ClientProtocolException e) {
e.printStackTrace();
} catch (final URISyntaxException e) {
e.printStackTrace();
} catch (final IOException e) {
e.printStackTrace();
}
final JobDetailEndpoint JobDetailObj = new JobDetailEndpoint();
String status = null;
while (true) {
Thread.sleep(15000);
status = JobDetailObj.GetJob(submitJobId);
if (status.equalsIgnoreCase("FINISHED")
|| status.equalsIgnoreCase("FAILED")
|| status.equalsIgnoreCase("SPOOLED")) {
break;
}
System.out.println("Output :: " + status);
}
if (status.equalsIgnoreCase("SPOOLED")) {
Assert.assertEquals(status.toUpperCase(), "SPOOLED",
"Email creation failed");
} else {
Assert.assertEquals(status.toUpperCase(), "FINISHED",
"Email creation failed");
Map<String, List<String>> Scenario = ExcelReader.excelReader();
String scenarioName = FilenameUtils.removeExtension(name);
Assert.assertNotNull(Scenario.get(scenarioName),
"Test is not enabled in xls");
if (Scenario.get(scenarioName).get(1).equalsIgnoreCase("email")) {
Double comparisonResult = GetMail.compareMails(scenarioName);
Assert.assertNotNull(comparisonResult,
"GeneratedMail or BaselineMail does not exist | ");
Assert.assertTrue((comparisonResult) == 100,
"Generated mail content is not the same | ");
}
}
您可以共享该类的代码吗?@juherr-已经添加了该类代码。您可以共享数据提供程序的代码吗?为什么不呢,基类也是。@juherr-已经添加了数据提供程序和基类代码,但只是想知道基类代码对您的分析有何用处?
BaseClass
经常使用配置方法并可以修改行为。您可以共享类的代码吗?@juherr-已经添加了类代码。您可以共享数据的代码吗供应商?为什么不呢?基类也是。@juherr-已经添加了数据提供程序和基类代码,但只是想知道基类代码对您的分析有何用处?BaseClass
通常有配置方法,可以修改行为。
public class SubmitJobTest extends BaseClass implements ITest {
private String name;
@BeforeSuite
public void generateXML() {
try {
XMLGenerator.mapper();
} catch (ValidityException e) {
e.printStackTrace();
} catch (ParsingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test(dataProvider = "files", dataProviderClass = FolderReader.class)
public void submitJob(final String name) throws Exception {
final SubmitJobEndpoint submitJobObj = new SubmitJobEndpoint();
String submitJobId = null;
try {
final BaseClass obj = new BaseClass();
obj.getPropValues();
submitJobId = submitJobObj.submitJob(name.toString(), BaseClass.queue,
BaseClass.config, BaseClass.type);
System.out.println("Job Id : " + submitJobId);
Assert.assertNotNull(submitJobId, "Job creation failed");
} catch (final InvalidKeyException e) {
e.printStackTrace();
} catch (final NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (final ClientProtocolException e) {
e.printStackTrace();
} catch (final URISyntaxException e) {
e.printStackTrace();
} catch (final IOException e) {
e.printStackTrace();
}
final JobDetailEndpoint JobDetailObj = new JobDetailEndpoint();
String status = null;
while (true) {
Thread.sleep(15000);
status = JobDetailObj.GetJob(submitJobId);
if (status.equalsIgnoreCase("FINISHED")
|| status.equalsIgnoreCase("FAILED")
|| status.equalsIgnoreCase("SPOOLED")) {
break;
}
System.out.println("Output :: " + status);
}
if (status.equalsIgnoreCase("SPOOLED")) {
Assert.assertEquals(status.toUpperCase(), "SPOOLED",
"Email creation failed");
} else {
Assert.assertEquals(status.toUpperCase(), "FINISHED",
"Email creation failed");
Map<String, List<String>> Scenario = ExcelReader.excelReader();
String scenarioName = FilenameUtils.removeExtension(name);
Assert.assertNotNull(Scenario.get(scenarioName),
"Test is not enabled in xls");
if (Scenario.get(scenarioName).get(1).equalsIgnoreCase("email")) {
Double comparisonResult = GetMail.compareMails(scenarioName);
Assert.assertNotNull(comparisonResult,
"GeneratedMail or BaselineMail does not exist | ");
Assert.assertTrue((comparisonResult) == 100,
"Generated mail content is not the same | ");
}
}
public class FolderReader {
@DataProvider(name = "files")
public static Object[][] GetFileNames() {
final File folder = new File("//Testing_XML_source");
final File[] listOfFiles = folder.listFiles();
final List<Object[]> list = new ArrayList<Object[]>();
for (final File file : listOfFiles) {
if (file.getName().toString().endsWith(".xml")) {
// System.out.println("File : " + file.getName().toString());
list.add(new Object[] {file.getName().toString()});
}
}
return list.toArray(new Object[list.size()][]);
}
}
public class BaseClass {
public static String queue;
public static String config;
public static String type;
InputStream inputStream;
public void getPropValues() throws IOException {
try {
final Properties prop = new Properties();
final String propFileName = "config.properties";
inputStream = getClass().getClassLoader().getResourceAsStream(propFileName);
if (inputStream != null) {
prop.load(inputStream);
} else {
throw new FileNotFoundException(
"property file '" + propFileName + "' not found in the classpath");
}
// get the property value and print it out
BaseClass.queue = prop.getProperty("queue");
BaseClass.config = prop.getProperty("config");
BaseClass.type = prop.getProperty("type");
} catch (final Exception e) {
System.out.println("Exception: " + e);
} finally {
inputStream.close();
}
}
}