2016-08-25 1 views
0

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 . . . 
+0

お客様の情報に関する詳細情報をご提供ください。質問を編集して、使用したスクリプトとエラーメッセージがあればそれを含めてください。 –

答えて

0

データプロバイダメソッドは例外をスローしません。メソッドにそれらを管理すれば、コードに何が間違っているのか理解できます。

あなたはクラスパスの問題があり、inputData.xlsxは、あなたがあなたがバットファイルで実行したときに予想される場所ではありません。

+0

返事をありがとう。 –

+0

以下は私のbatファイルです –

+0

cd C:\ DCE \ Automation ProjectPath = C:\ DCE \ Automation set classpath =%ProjectPath%\ bin;%ProjectPath%\ lib \ * java org.testng.TestNG% ProjectPath%\ testng.xml 一時停止 –

0

はい、解決しました。私のpoiファイルはプロジェクトフォルダ\ lib \ poiフォルダにあります。私はそれらをプロジェクトフォルダ\ libに移動しました。そして、それは動作します。 ありがとう@Julien Herr。

関連する問題