Jacobvu84 / selenium-vietnam-training-course

Questions Tracking
7 stars 5 forks source link

Cách đọc file properties #15

Closed Jacobvu84 closed 6 years ago

Jacobvu84 commented 6 years ago
package com.asksqa.utilities;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Properties;

public class LoadObject {

    private static Properties OBJECT = null;
    private static Properties CONFIG = null;
    static String fseparator = File.separator;

    public static Properties loading_object_repository(String objectRepos) throws IOException {
        FileInputStream fs = null;
        OBJECT = new Properties();
        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();

        URL url = classLoader.getResource(objectRepos);

        try {
            File folder = new File(url.toURI());
            if (folder.isDirectory()) {
                File[] files = folder.listFiles();
                for (File file : files) {
                    fs = new FileInputStream(file);
                    OBJECT.load(fs);
                }
            }
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }

        return OBJECT;
    }

    public static Properties loading_config_sys(String fileName) throws IOException {
        FileInputStream fs = null;
        try {
            fs = new FileInputStream(System.getProperty("user.dir") + fseparator + fileName);
            CONFIG = new Properties();
            CONFIG.load(fs);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        return CONFIG;
    }

}
Jacobvu84 commented 6 years ago

Thêm vào file serenity.properties nội dung sau

user.company=Ask SQA Ptd user.name=jacob.vu user.pwd=loveyou

Cách dùng

public static Properties CONFIG = null;

@When("^user is currently logged in to the system$")
public void loginTaskhub()
    {
        try
        {
            String username = System.getProperty("usr");
            String userpwd = System.getProperty("pwd");
            String companyName = System.getProperty("company");

            CONFIG = LoadObject.loading_config_sys("serenity.properties");

            if (Strings.isNullOrEmpty(username))
                username = CONFIG.getProperty("user.name");
                //System.out.println(username);
            if (Strings.isNullOrEmpty(userpwd))
                userpwd = CONFIG.getProperty("user.pwd");
            if (Strings.isNullOrEmpty(companyName))
                companyName = CONFIG.getProperty("user.company");

            loginStep.goTo();
            loginStep.loginAs(username).selectCompany(companyName).withPassword(userpwd).login();
            loginStep.waitUntilLoginFinishes();
        } catch (IOException e)
        {
            e.printStackTrace();
        }
    }
Jacobvu84 commented 6 years ago
String username = System.getProperty("usr");
String userpwd = System.getProperty("pwd");
String companyName = System.getProperty("company");

Mấy dòng này có nghĩa là có thể pass value của mấy cái này qua cơ chế dòng lệnh ví dụ mvn ....... -Dusr=abc -Dpwd=blabla -Dcompany=Limited Ptd

context của System.getProperty là để get các properties của Operating System còn khi chạy lệnh java với -D thì -D là prefix để pass các parameter khi chạy chương trình