TestNgスクリプトは、DataProviderを使用してExcelからの入力データを使用します。 Eclipseからtestng.xml
ファイルを実行するとうまく動作します。 しかし、同じファイルを.batファイルから実行しようとすると動作しません。 Excelファイルを開こうとするところで失敗します。 助けてください。TestNGスクリプトは.batファイルから実行するとExcelを開くことができません
これは私のデータプロバイダクラスである:以下
@DataProvider(name="DataProvider")
public static Object[][] passExcelData(Method m) throws BiffException, IOException
{
String sheetName = m.getName();
config = new ExcelDataConfig("inputData.xlsx", sheetName);
int rows = config.getRowCount(sheetName);
int cols = config.getColCount(sheetName);
Object[][] data = new Object[rows][cols];
for(int i=0; i<rows; i++)
{
for(int j=0; j<cols; j++)
{
data[i][j] = config.getData(sheetName, i, j);
}
}
return data;
}
とBeforeClassで、データプロバイダを呼び出すテスト:
@BeforeClass
public void setup() throws InterruptedException
{
System.setProperty("webdriver.chrome.driver", rootFolder +"Drivers\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.manage().window().maximize();
System.out.println("setup done");
}
@Test(priority = 7, dataProvider="DataProvider")
public void EmailAlerts(String Product, String URL, String username, String password) throws InterruptedException
{
functionName = Product + "_EmailAlerts_" +username;
HomePage(URL);
Login.loginProcess(username, password);
EmailAlerts.EmailAlerts_Process();
Logout();
}
それは、次のようなエラー経由しません。 BeforeClassは問題なく実行されます。ブラウザを開き、「セットアップ完了」メッセージを表示します。それはDataProviderクラスを呼び出しますが、Excelファイルを開くことはできません。 この問題は、.batファイルから実行した場合にのみ発生します。 DataProviderクラスの入力データをExcel部分から読み込み、ハードコードすると、同じbatファイルが正常に動作します。
:public class Master {
@Test
public void sample() throws Exception
{
System.out.println("INSIDE SAMPLE");
FileInputStream fis = new FileInputStream ("C:\\Automation\\Test\\inputData.xlsx");
System.out.println("FILE");
XSSFWorkbook wb = new XSSFWorkbook(fis);
System.out.println("WORKBOOK");
wb.getSheet("MyDetails");
System.out.println("SHEET");
System.out.println(wb.getActiveSheetIndex());
}
}以下
は、batファイルから実行ログです:
私は私のスクリプトを簡素化し、以下10に冗長設定されているが最新のものです
C:\Automation\Test>cd C:\Automation\Test
C:\Automation\Test>set ProjectPath=C:\Automation\Test
C:\Automation\Test>echo C:\Automation\Test
C:\Automation\Test
C:\Automation\Test>set classpath=C:\Automation\Test\bin;C:\Automation\Test\lib\*
C:\Automation\Test>echo C:\Automation\Test\bin;C:\Automation\Test\lib\*
C:\Automation\Test\bin;C:\Automation\Test\lib\*
C:\Automation\Test>java org.testng.TestNG C:\Automation\Test\testng.xml
...
... TestNG 6.8beta 20120825_1010 by C?dric Beust ([email protected])
...
[TestRunner] Running the tests in 'Test' with parallel mode:false
[RunInfo] Adding method selector: [email protected]
priority: 10
[TestClass] Creating TestClass for [ClassImpl class=Master.Master]
[TestClass] Adding method Master.sample()[pri:0, instance:null] on TestClass cla
ss Master.Master
[XmlMethodSelector] Including method Master.sample()
[TestNG] Running:
C:\Automation\Test\testng.xml
[SuiteRunner] Created 1 TestRunners
[TestRunner] Running test Test on 1 classes, included groups:[] excluded group
s:[]
===== Test class
Master.Master
@Test Master.sample()[pri:0, instance:[email protected]]
======
[Invoker 6738746] Invoking Master.Master.sample
INSIDE SAMPLE
FILE
===== Invoked methods
Master.sample()[pri:0, instance:[email protected]] 18154549
=====
Creating C:\Automation\Test\test-output\Suite\Test.html
Creating C:\Automation\Test\test-output\Suite\Test.xml
FAILED: sample
java.lang.NoClassDefFoundError: org/apache/poi/xssf/usermodel/XSSFWorkbook
at Master.Master.sample(Master.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocat
ionHelper.java:80)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWork
er.java:127)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
at org.testng.TestRunner.privateRun(TestRunner.java:767)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1198)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1123)
at org.testng.TestNG.run(TestNG.java:1031)
at org.testng.TestNG.privateMain(TestNG.java:1338)
at org.testng.TestNG.main(TestNG.java:1307)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.xssf.usermodel.XSSFW
orkbook
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 24 more
===============================================
Test
Tests run: 1, Failures: 1, Skips: 0
===============================================
===============================================
Suite
Total tests run: 1, Failures: 1, Skips: 0
===============================================
Creating C:\Automation\Test\test-output\old\Suite\toc.html
Creating C:\Automation\Test\test-output\old\Suite\Test.properties
Creating C:\Automation\Test\test-output\old\Suite\index.html
Creating C:\Automation\Test\test-output\old\Suite\main.html
Creating C:\Automation\Test\test-output\old\Suite\groups.html
Creating C:\Automation\Test\test-output\old\Suite\methods.html
Creating C:\Automation\Test\test-output\old\Suite\methods.html
Creating C:\Automation\Test\test-output\old\Suite\methods.html
Creating C:\Automation\Test\test-output\old\Suite\methods-alphabetical.html
Creating C:\Automation\Test\test-output\old\Suite\methods-alphabetical.html
Creating C:\Automation\Test\test-output\old\Suite\methods-alphabetical.html
Creating C:\Automation\Test\test-output\old\Suite\classes.html
Creating C:\Automation\Test\test-output\old\Suite\reporter-output.html
Creating C:\Automation\Test\test-output\old\Suite\methods-not-run.html
Creating C:\Automation\Test\test-output\old\Suite\testng.xml.html
Creating C:\Automation\Test\test-output\old\index.html
[TestNG] Time taken by [email protected]: 53 ms
[TestNG] Time taken by [email protected]: 3 ms
Creating C:\Automation\Test\test-output\junitreports\TEST-Master.Master.xml
[TestNG] Time taken by [email protected]: 4 ms
Creating C:\Automation\Test\test-output\testng-failed.xml
Creating C:\Automation\Test\test-output\Suite\testng-failed.xml
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 6 ms
Creating C:\Automation\Test\test-output\index.html
[TestNG] Time taken by [email protected]: 40 ms
Creating C:\Automation\Test\test-output\testng-results.xml
[TestNG] Time taken by [email protected]: 6 ms
C:\Automation\Test>pause
Press any key to continue . . .
お客様の情報に関する詳細情報をご提供ください。質問を編集して、使用したスクリプトとエラーメッセージがあればそれを含めてください。 –