JUNIT test report

时间:2016-04-25 09:10:11

标签: java eclipse selenium-webdriver gradle junit

Please what is wrong with my gradle.build file?. AM trying to generate html test report but after running gradle.test, my reports/test/index.html has 0tests, 0failures,0ignored with -duration, successful was also -(minus). I believe i should see how many test run with test pass figures with 100% successful since my test runs perfectly fine when i use ./gradlew run, or gradle test(BUILD SUCCESSFUL). Have check previous questions but none seems to have this error. please am confused. :( Below is my build.gradle file

    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'application'

    mainClassName = 'main.java.Functional.Test_Run'

    repositories {
        mavenCentral()
    }

    sourceSets {
        selenium
    }

    test {
        reports {
          junitXml.enabled = false
          html.enabled = true
        }
    }

    jar {
        baseName = 'gs-gradle'
        version =  '0.1.0'     
    }

    compileJava {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }

    dependencies {
        seleniumCompile 'junit:junit:4.11'
        seleniumCompile 'org.seleniumhq.selenium:selenium-java:2.45.0'
        seleniumCompile 'org.seleniumhq.selenium:selenium-server:2.45.0'    
        compile fileTree(dir: 'libraries', include: '*.jar')    
    }

    task jettyDaemon(type: org.gradle.api.plugins.jetty.JettyRun) {
        daemon = true
    }

    task selenium(type: Test, dependsOn: jettyDaemon) {
        testClassesDir = sourceSets.selenium.output.classesDir
        classpath = sourceSets.selenium.runtimeClasspath
    }

    eclipse {
        classpath {
            plusConfigurations += configurations.seleniumCompile
        }
    }

    task wrapper(type: Wrapper) {
        gradleVersion = '2.3'
   }

My project structure:

main.java.xyz
main.java.xyzz
sourceSet.java.xyz
sourceSet.java.xyzz
sourceSet.resources.xxx
test.java.xyz
test.java.xyzz
test.resources.xxx

index.html

Requested class below:

package main.java.Functional;
import static org.junit.Assert.assertTrue;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import main.java.Functional.Testcase.performAction;

/**


* This class is used for testing all the indo functionalities.
 * @author Ola
 */

public class Test_Run {
    /**
     * Variables to set up driver and browser.
     */
    public static AllMethods callMethod;
    public static WebDriver driver;
    public static String ID;
    public static String filePath = "C:\\Users\\Ola\\workspace\\Config.properties";
    /**
     * Setup method to run chrome browser
     * @param args
     * @throws Exception
     */

    public static void setup(String[] args) throws Exception {

        callMethod = new AllMethods();
        callMethod.setup();
        callMethod.driver.get("http://independent.ie");
        // Maximize browser window
        callMethod.driver.manage().window().maximize();
        // store current url in a string
        String site = callMethod.driver.getCurrentUrl();
        // print out the URL in the console
        System.out.println("The current Url IS: " + site);
        // Get the OS on which the driver is running.......
        String detectOS = log.DetectOS();
        log.log(detectOS);
        Thread.sleep(7000);
    }
    /**
     * Main Method to start the browser and run all necessary testcases.    
     * @param args
     * @throws Exception
     */

    public static void main(String[] args) throws Exception {

        // specify the Test to Run.........
        performAction tc = performAction.acct_Profile;
        try {
            setup(args);            
        } catch (Exception e) {
            log.log("Error while setting up the driver.");
            }       
        try {
            switch (tc) {
            case acct_Profile:
                verifyAcct_ProfileUpdated();
                break;
                }
        } catch (Exception e) {
            log.log("There was an Exception while running the test: "
                    + e.getMessage());
        }
        callMethod.close();
    }

    /**
     *  Verifies my profile updated NATIVELY
     * @throws Exception
     * @author Ola
     */
    public static void verifyAcct_ProfileUpdated() throws Exception {
        log.header("........ Verify MY ACCOUNT PROFILE section ........");
        String finalResponse = callMethod.profileSection(
                callMethod.parseConf_File("EMAIL_ADDRESS"),
                callMethod.parseConf_File("NATIVE_PASSWORD"), 
                callMethod.parseConf_File("DISPLAY_NAME"),
                callMethod.parseConf_File("FIRST_NAME"),
                callMethod.parseConf_File("LAST_NAME"),
                callMethod.parseConf_File("ADDRESS_1"),
                callMethod.parseConf_File("ADDRESS_2"),
                callMethod.parseConf_File("CITY"),
                callMethod.parseConf_File("COUNTRY"),
                callMethod.parseConf_File("COUNTRY_2"),
                callMethod.parseConf_File("COUNTY"),
                callMethod.parseConf_File("COUNTY_2"),
                callMethod.parseConf_File("POSTCODE"),
                callMethod.parseConf_File("TELEPHONE"));

        if (finalResponse.contains("DOES NOT Exist")) {
            log.log("User DOES NOT Exist in Database.... You will have to Sign Up.");

        } else if (finalResponse.contains("FACEBOOK")) {
            log.log("User Exist in Database with FACEBOOK Social Account and "
                    + "Cannot Sign Up Natively......Open My Acct process terminated!........");
        } else if (finalResponse.contains("GOOGLE")) {
            log.log("User Exist in Database with GOOGLE Social Account and "
                    + "Cannot Sign Up Natively......Open My Acct process terminated!........");
        }else if (finalResponse.contains("STILL DOES NOT EXIS")){
            log.log("CANNOT continue process as COUNTRY or COUNTY specified STILL DO NOT exist on list, ..pls contact Customer support");
        }else if (finalResponse.contains("Disabled state")) {
            log.log("Button is in Disabled state.....Profile was "
                    + "NOT updated as NO Update was made.....");
        } else if (finalResponse.contains("Successfully")) {
            log.log("Profile was Successfully updated");
        } else if (finalResponse.contains("NOT updated")) {
            log.log("Profile was NOT updated.... pls contact Gigya customer service......");
        } else if (finalResponse.contains("MY ACCOUNT page")) {
            log.log("MY ACCOUNT page Successfully Opened and updated as expected.......");
        }
        callMethod.close();
    }

Gradle test output

ola@ola-VirtualBox:~/workspace/mainsite_automation$ gradle test

:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE

BUILD SUCCESSFUL

Total time: 2.252 secs

./gradlew run output:

ola@ola-VirtualBox:~/workspace/mainsite_automation$ ./gradlew run
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:run
Starting ChromeDriver 2.21.371461 (633e689b520b25f3e264a2ede6b74ccc23cb636a) on port 30326
Only local connections are allowed.
The current Url IS: http://www.independent.ie/
This driver is running on Linux System...@Current TIME and DATE: 12:22:43 25/04/2016
----------------------------------------------------------------------------------------------------
--........ Verify MY ACCOUNT PROFILE section ........-----------------------------------------------
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
--Click on My Account page to Open page ........ pls wait-------------------------------------------
----------------------------------------------------------------------------------------------------
-- Sign in to OPEN MY ACCOUNT PAGE ....... pls wait.------------------------------------------------
----------------------------------------------------------------------------------------------------
--......USER SIGN IN NATIVELY..............---------------------------------------------------------
----------------------------------------------------------------------------------------------------
[Step 1] Click the Sign In Link
SIGN IN :Link Exist, ..... and Successfully clicked......
[Step 2] Fill in the SIGN IN_FORM ........ pls wait to complete process....
email: 
Element Present WITH empty value...JOE.ARPPEVM.MARK@GMAIL.COM: entered.
password: : 
Element Present WITH empty value...QWERTY@123: entered.
[Step 3] Click Sign In Button.... pls wait...
----------------------------------------------------------------------------------------------------
--Check if SIGN IN is Present or Not......----------------------------------------------------------
----------------------------------------------------------------------------------------------------
SIGN IN :Button IS present..performing click action .....pls wait.
SIGN IN :Button clicked...... continue.
--Verify Successfully Sign In or NOT......... pls wait.---------------------------------------------
Verify: MY ACCOUNT element isPresent........pls wait...... 
MY ACCOUNT element PRESENT.....continue..
User Successfully signed in NATIVELY, Opening MY ACCOUNT page..... pls wait.
MY ACCOUNT :Link Exist, ..... and Successfully clicked......
----------------------------------------------------------------------------------------------------
--Select My Profile Section FROM My Account Page.... -----------------------------------------------
----------------------------------------------------------------------------------------------------
My Profile :Link Exist, ..... and Successfully clicked......
--Looping through all Elements and sendKeys.......pls wait...---------------------------------------
[Step 1] 
Element Present WITH empty value...JOE_MARK: entered.
[Step 2] 
TextBox field is write-protected..... therefore is in Disabled state.
Text box is disabled..... move to next step
[Step 3] 
Element Present WITH empty value...JOE: entered.
[Step 4] 
Element Present WITH empty value...ARPPEVM: entered.
[Step 5] 
Element Present WITH empty value...10 PIMP RD: entered.
[Step 6] 
Element Present WITH empty value...ESTATE CLOSE: entered.
[Step 7] 
Element Present WITH empty value...DUBLIN: entered.
[Step 8] 
empty country.......
3
Country specified DOES NOT EXIST ......please make another selection
CANNOT continue process as COUNTRY or COUNTY specified STILL DO NOT exist on list, ..pls contact Customer support

BUILD SUCCESSFUL

Total time: 1 mins 45.796 secs

UPDATED CODE BELOW ...... code works and run successfully when run manually

package main.java.Functional;

import static org.junit.Assert.assertTrue;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import main.java.Functional.AllMethodsTestcases.performAction;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;


/**
 * This class is used for testing all the indo functionalities.
 * 
 * @author Ola
 */
public class AllMethodsTest {

    /**
     * Variables to set up driver and browser.
     */
    public static AllMethods callMethod;
    public static WebDriver driver;
    public static String ID;
    public static String filePath = "C:\\Users\\Ola\\workspace\\Config.properties";

    /**
     * Setup method to run chrome browser
     * @param args
     * @throws Exception
     */
    @Before
    public static void setup(String[] args) throws Exception {
        callMethod = new AllMethods();
        callMethod.setup();
        callMethod.driver.get("http://independent.ie");
        // Maximize browser window
        callMethod.driver.manage().window().maximize();
        // store current url in a string
        String site = callMethod.driver.getCurrentUrl();
        // print out the URL in the console
        System.out.println("The current Url IS: " + site);
        // Get the OS on which the driver is running.......
        String detectOS = log.DetectOS();
        log.log(detectOS);
        Thread.sleep(7000);
    }

    /**
     * Main Method to start the browser and run all necessary testcases.     * 
     * @param args
     * @throws Exception
     */
    @Before
    public static void main(String[] args) throws Exception {

        // specify the Test to Run.........
        performAction tc = performAction.acct_Profile;
        try {
            setup(args);

        } catch (Exception e) {
            log.log("Error while setting up the driver.");
        }

        try {

            switch (tc) {
            case testMouseOverJobs:
                testVerifyJobsLink();
                break;
            case testMouseOverCars:
                testVerifyCarsLink();
                break;
            case testMouseOverDating:
                testVerifyDatingLink();
                break;
            case testMouseOverDeath:
                testVerifyDeathNoticesLink();
                break;
            case testMouseOverFitMag:
                testVerifyFitMagLink();
                break;
            case testMouseOverHotels:
                testVerifyHotelsLink();
                break;
            case click_subscribe:
                testVerifySubscribeLink();
                break;
            case click_SignInNative:
                testVerifySignIn_Native();
                break;
            case click_SignUpNative:
                testVerifySignUp_Native();
                break;
            case searchUser:
                testVerifySearchUser();
                break;
            case deleteUser:
                testVerifyDeleteUser();
                break;
            case click_SignInFB:
                testVerifySignInFB();
                break;
            case click_SignInFB_EditInfo:
                testVerifySignInFB_EditInfo();
                break;
            case click_SignInGoogle:
                testVerifySignInGoogle();
                break;
            case click_MyAcct_SS:
                testVerifyClick_MyAcctPage_forS_S_user();
                break;
            case click_MyAcct:
                testVerifyClick_MyAcct();
                break;
            case acct_Profile:
                testVerifyAcct_ProfileUpdated();
                break;
            case acct_Password:
                testVerifyAcct_PasswordChange();
                break;
            case acct_SocialAccts_FB:
                testVerifyAcct_SocialLink_FB();
                break;
            case acct_SocialAccts_Google:
                testVerifyAcct_SocialLink_Google();
                break;
                }
        } catch (Exception e) {
            log.log("There was an Exception while running the test: "
                    + e.getMessage());
        }
        tearDown();
    }



    /**
     * "C:\\Users\\Ola\\workspace\\Config.properties"
     * @throws Exception
     */
    @Test
    private static void testVerifyFileExist() throws Exception {
        boolean verify =callMethod.FileExist();
        if(verify)
        {
            log.log("File does exist");
        }else
        {
            log.log("File does not exist, .....");
        }
        tearDown();
    }

    @Test
    private static void testVerifyloadConfig_File() throws Exception {
        log.divider("Load Config file path specified");
        String response =callMethod.parseConf_File("NATIVE_PASSWORD");
        log.log(response);
        tearDown();
    }

    /**
     * Verifies JOB link on home page
     * @throws Exception
     * @author Ola
     */
    @Test
    public static void testVerifyJobsLink() throws Exception {
        log.header("....... Verify JOBS Link.........");
        callMethod.hoverAndClickOnce(By.cssSelector(AllMethodsCONSTANTElements.JOBS),
                By.cssSelector(AllMethodsCONSTANTElements.IRISHJOBS), "JOBS", "JOBS");
        tearDown();
    }
    /**
     * Verifies CARS link on home page
     * @throws Exception
     * @author Ola
     */
    @Test
    public static void testVerifyCarsLink() throws Exception {
        log.header("....... Verify CARS Link.........");
        String[] elementNames = new String[] { AllMethodsCONSTANTElements.CARSIRELAND,
                AllMethodsCONSTANTElements.USED_CARS_SEARCH, AllMethodsCONSTANTElements.CAR_DEALERS };
        for (String elementName : elementNames) {
            log.divider("1st Element ......'CarsIreland.ie'.....");
            if (callMethod.elementPresent(By.cssSelector(elementName),
                    "CARS_IRELAND")) {
                callMethod.hoverAndClickMultiple(
                        By.cssSelector(AllMethodsCONSTANTElements.CARS),
                        By.cssSelector(AllMethodsCONSTANTElements.CARSIRELAND), "CARS",
                        "CarsIreland.ie");
                Thread.sleep(3000);
                log.header2("");
            }
            log.divider("2nd Element .......'Used Car Search.....'");
            log.step("");
            if (callMethod.elementPresent(By.cssSelector(elementName),
                    "USED CAR SEARCH")) {
                log.log("Open Used Car Search link.....");
                callMethod.hoverAndClickMultiple(
                        By.cssSelector(AllMethodsCONSTANTElements.CARS),
                        By.cssSelector(AllMethodsCONSTANTElements.USED_CARS_SEARCH),
                        "CARS", "USED CAR SEARCH");
                Thread.sleep(3000);
                log.header2("");
            }
            log.divider("3rd Element .......'Car Dealers'..........");
            log.step("");
            if (callMethod.elementPresent(By.cssSelector(elementName),
                    "CAR DEALERS")) {
                log.log("Open Cars Dealers Link........");
                callMethod.hoverAndClickMultiple(
                        By.cssSelector(AllMethodsCONSTANTElements.CARS),
                        By.cssSelector(AllMethodsCONSTANTElements.CAR_DEALERS), "CARS",
                        "CAR DEALERS");
                break;
            }
        }
        tearDown();
    }
    /**
     *  Verifies my profile updated NATIVELY
     * @throws Exception
     * @author Ola
     */
    @Test
    public static void testVerifyAcct_ProfileUpdated() throws Exception {
        log.header("........ Verify MY ACCOUNT PROFILE section ........");
        String finalResponse = callMethod.profileSection(
                callMethod.parseConf_File("EMAIL_ADDRESS"),
                callMethod.parseConf_File("NATIVE_PASSWORD"), 
                callMethod.parseConf_File("DISPLAY_NAME"),
                callMethod.parseConf_File("FIRST_NAME"),
                callMethod.parseConf_File("LAST_NAME"),
                callMethod.parseConf_File("ADDRESS_1"),
                callMethod.parseConf_File("ADDRESS_2"),
                callMethod.parseConf_File("CITY"),
                callMethod.parseConf_File("COUNTRY"),
                callMethod.parseConf_File("COUNTRY_2"),
                callMethod.parseConf_File("COUNTY"),
                callMethod.parseConf_File("COUNTY_2"),
                callMethod.parseConf_File("POSTCODE"),
                callMethod.parseConf_File("TELEPHONE"));

        if (finalResponse.contains("DOES NOT Exist")) {
            log.log("User DOES NOT Exist in Database.... You will have to Sign Up.");

        } else if (finalResponse.contains("FACEBOOK")) {
            log.log("User Exist in Database with FACEBOOK Social Account and "
                    + "Cannot Sign Up Natively......Open My Acct process terminated!........");
        } else if (finalResponse.contains("GOOGLE")) {
            log.log("User Exist in Database with GOOGLE Social Account and "
                    + "Cannot Sign Up Natively......Open My Acct process terminated!........");
        }else if (finalResponse.contains("STILL DOES NOT EXIS")){
            log.log("CANNOT continue process as COUNTRY or COUNTY specified STILL DO NOT exist on list, ..pls contact Customer support");
        }else if (finalResponse.contains("Disabled state")) {
            log.log("Button is in Disabled state.....Profile was "
                    + "NOT updated as NO Update was made.....");
        } else if (finalResponse.contains("Successfully")) {
            log.log("Profile was Successfully updated");
        } else if (finalResponse.contains("NOT updated")) {
            log.log("Profile was NOT updated.... pls contact Gigya customer service......");
        } else if (finalResponse.contains("MY ACCOUNT page")) {
            log.log("MY ACCOUNT page Successfully Opened and updated as expected.......");
        }
        tearDown();
    }

    @After
    public static void tearDown(){
        callMethod.close();
    }

BUT index.html file is still empty package info

1 个答案:

答案 0 :(得分:2)

仅仅因为执行测试目标并不意味着那里有任何测试。你没有得到测试报告的问题是你的课程没有JUnit测试。

要将类作为JUnit测试执行,您需要使用JUnit的注释org.junit.Testorg.junit.Beforeorg.junit.After。那就是你需要将你的类重构为这样的东西(不一定是完整的......):

package main.java.Functional;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/**
 * 
 * 
 * This class is used for testing all the indo functionalities.
 * 
 * @author Ola
 */

public class Test_Run {
    /**
     * Variables to set up driver and browser.
     */
    public static AllMethods callMethod;
    public static WebDriver driver;
    public static String ID;
    public static String filePath = "C:\\Users\\Ola\\workspace\\Config.properties";

    /**
     * Setup method to run chrome browser
     * 
     * @param args
     * @throws Exception
     */
    @Before
    public void setup() throws Exception {

        callMethod = new AllMethods();
        callMethod.setup();
        callMethod.driver.get("http://independent.ie");
        // Maximize browser window
        callMethod.driver.manage().window().maximize();
        // store current url in a string
        String site = callMethod.driver.getCurrentUrl();
        // print out the URL in the console
        System.out.println("The current Url IS: " + site);
        // Get the OS on which the driver is running.......
        String detectOS = log.DetectOS();
        log.log(detectOS);
        Thread.sleep(7000);
    }

    @After
    public void tearDown() {
        callMethod.close();
    }

    /**
     * Verifies my profile updated NATIVELY
     * 
     * @throws Exception
     * @author Ola
     */
    @Test
    public void verifyAcct_ProfileUpdated() throws Exception {
        log.header("........ Verify MY ACCOUNT PROFILE section ........");
        String finalResponse = callMethod.profileSection(
                callMethod.parseConf_File("EMAIL_ADDRESS"),
                callMethod.parseConf_File("NATIVE_PASSWORD"),
                callMethod.parseConf_File("DISPLAY_NAME"),
                callMethod.parseConf_File("FIRST_NAME"),
                callMethod.parseConf_File("LAST_NAME"),
                callMethod.parseConf_File("ADDRESS_1"),
                callMethod.parseConf_File("ADDRESS_2"),
                callMethod.parseConf_File("CITY"),
                callMethod.parseConf_File("COUNTRY"),
                callMethod.parseConf_File("COUNTRY_2"),
                callMethod.parseConf_File("COUNTY"),
                callMethod.parseConf_File("COUNTY_2"),
                callMethod.parseConf_File("POSTCODE"),
                callMethod.parseConf_File("TELEPHONE"));

        if (finalResponse.contains("DOES NOT Exist")) {
            log.log("User DOES NOT Exist in Database.... You will have to Sign Up.");

        } else if (finalResponse.contains("FACEBOOK")) {
            log.log("User Exist in Database with FACEBOOK Social Account and "
                    + "Cannot Sign Up Natively......Open My Acct process terminated!........");
        } else if (finalResponse.contains("GOOGLE")) {
            log.log("User Exist in Database with GOOGLE Social Account and "
                    + "Cannot Sign Up Natively......Open My Acct process terminated!........");
        } else if (finalResponse.contains("STILL DOES NOT EXIS")) {
            log.log("CANNOT continue process as COUNTRY or COUNTY specified STILL DO NOT exist on list, ..pls contact Customer support");
        } else if (finalResponse.contains("Disabled state")) {
            log.log("Button is in Disabled state.....Profile was "
                    + "NOT updated as NO Update was made.....");
        } else if (finalResponse.contains("Successfully")) {
            log.log("Profile was Successfully updated");
        } else if (finalResponse.contains("NOT updated")) {
            log.log("Profile was NOT updated.... pls contact Gigya customer service......");
        } else if (finalResponse.contains("MY ACCOUNT page")) {
            log.log("MY ACCOUNT page Successfully Opened and updated as expected.......");
        }
        callMethod.close();
    }
}

一般来说,遵循测试类的通用命名约定是一种很好的方式。也就是说,您的测试类应该被命名为AllMethodsTest,表示它包含类AllMethods的测试用例。并且您的测试方法应该命名为testVerifyAcct_ProfileUpdated,以便轻松地将它们与您班级中的其他辅助方法区分开来。

此外,您没有在测试中声明任何内容。您只是在输出或日志文件中写入内容。这样你的测试总会成功(除非当然有例外)。您应该考虑将预期输出的假设指定为断言,例如在这个小测试示例中:

@Test
public void testCanConstructAPersonWithAName() {
    String firstName = "Larry";
    Person person = new Person(firstName);
    // the person's name attribute is expected to be firstName
    assertEquals(firstName , person.getName());
}

<强>更新

基本Java项目的结构应如下所示:

enter image description here