我正在使用java(1.6)和WebDriver(2.16)在Eclipse(Indigo)中开发测试。主要方法不会在Eclipse中结束
我有一个相当简单的测试,运行良好,但并不实际'结束'。我的意思是,在'main'方法中的所有代码行被执行后,Eclipse控制台仍然指示代码正在运行(控制台中的红色'终止'按钮被启用)。
这只是昨天开始发生的,我用一些新的代码扩展了测试脚本。认为是问题所在,我评论了所有新代码。不幸的是,问题依然存在。
我该如何解决这个问题?
感谢您的输入。
编辑
下面一个JStack线程转储的相关部分。见here对于完全转储
2012-01-07 10时56分40秒全部线程转储的HotSpot的Java(TM)64位服务器VM (20.4-B02混合模式):
“主题-7“守护进程prio = 6 tid = 0x0000000008c08800 nid = 0x12f4可运行 [0x000000000 921f000] java.lang.Thread.State:RUNNABLE at java.io.FileInputStream.readBytes(Native Method) at java.io.FileInputStream.read (Unknown Source) at org.apache.commons.exec.StreamPumper.run(StreamPumper.java:105) at java.lang.Thread.run(Unknown Source)
“线程6” 守护程序PRIO = 6 TID = 0x0000000008d7b800 NID = 0xb98可运行 [0x0000000009 11f000] java.lang.Thread.State中:RUNNABLE 在java.io.FileInputStream.readBytes(本机方法) 在java的.io.FileInputStream.read(未知来源) 在java.io.BufferedInputStream.fill(未知来源) 在java.io.BufferedInputStream.read1(未知来源) 在java.io.BufferedInputStream.read(未知来源) - 锁定< 0x00000007d5a00888>(a java.io.BufferedInputStream) at java.io.FilterInputStream.read(Unknown Source) at org.apache.commons.exec.StreamPumper.run(StreamPumper.java:105) 在java.lang.Thread.run(未知来源)
“线程5” PRIO = 6 TID = 0x000000000678b000 NID = 0x10e4可运行 [0x000000000901f000] java.lang.Thread.State中:RUNNABLE 在java.lang中.ProcessImpl.waitFor(本机方法) 在org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecut or.java:347) 在org.apache.commons.exec.DefaultExecutor.access $ 200(DefaultExecutor.ja VA :46) at org.apache.commons.exec.DefaultExecutor $ 1.run(DefaultExecutor.java:18 8)“main”prio = 6 tid = 0x000000000062e000 nid = 0x450 runnable [0x000000000261f000] java.lang.Thread.State :RUNNABLE at java.lang.Thread。退出(来源不明)
编辑
这里是我的Excel中的代码(使用Java IO和Apache的POI类)
public HashMap<String, String> getTestData()
{
InputStream myxls = null;
try {
// Create a connection to the Excel file
myxls = new FileInputStream(fileName);
System.out.println("Excel Input was opened");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
}
// Define a workbook object
HSSFWorkbook wb = null;
try {
// Instantiate the workbook object
wb = new HSSFWorkbook(myxls);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Create a worksheet object
HSSFSheet sheet = wb.getSheet(sheetName);
// Read the first row (it always contains the headers (variable names)
HSSFRow headerRow = sheet.getRow(0);
// Read the row requested
HSSFRow row = sheet.getRow(dataRow);
//System.out.println("Creating a new HashMap from row " + dataRow + " in sheet " + sheetName);
// Define a collection of value/value pairs
HashMap<String,String> testData = new HashMap<String,String>();
// Get count of columns != empty
int columnCount = row.getPhysicalNumberOfCells();
//System.out.println(Integer.toString(columnCount));
String textHeader;
String textData;
// Loop through the columns
for(int colcount=0; colcount < columnCount; colcount++)
{
// Read the column header and the cell value
HSSFCell cell = row.getCell(colcount);
HSSFCell headerCell = headerRow.getCell(colcount);
switch (headerCell.getCellType())
{
case HSSFCell.CELL_TYPE_NUMERIC :
{
// cell type numeric.
textHeader = Double.toString(headerCell.getNumericCellValue());
//System.out.println(textHeader);
break;
}
case HSSFCell.CELL_TYPE_STRING :
{
// cell type string.
HSSFRichTextString richTextString = headerCell.getRichStringCellValue();
textHeader = richTextString.getString();
break;
}
default :
{
// types other than String and Numeric.
textHeader = "Type not supported";
break;
}
}
switch (cell.getCellType())
{
case HSSFCell.CELL_TYPE_NUMERIC :
{
// cell type numeric.
textData = Double.toString(cell.getNumericCellValue());
break;
}
case HSSFCell.CELL_TYPE_STRING :
{
// cell type string.
HSSFRichTextString richTextString = cell.getRichStringCellValue();
textData = richTextString.getString();
break;
}
case HSSFCell.CELL_TYPE_BLANK :
{
// cell type string.
textData = "";
break;
}
default :
{
// types other than String and Numeric.
textData = "Type not supported";
break;
}
}
// Add the value of each cell to the HashMap collection
testData.put(textHeader,textData);
//System.out.println(textHeader + "/" + textData);
}
try{
// End the file object
myxls.close();
System.out.println("Excel Input was closed");
}
catch (IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
// Send the HashMap back to the calling code
return testData;
}
什么是代码? – 2012-01-07 16:04:11
完成重建将是我的第一步。 – sje397 2012-01-07 16:05:46
您的程序是否启动了仍在运行或创建GUI组件(框架等)的非守护线程? – 2012-01-07 16:06:43