在两个不同的类junit中调用同一个方法的最简单方法

时间:2013-08-01 05:36:32

标签: eclipse junit selenium-webdriver

我在Login中有一种方法"First class"。现在我的"Second class"再次登录需要完成,所以任何人都可以告诉我执行此任务的最简单方法是什么?

  1. 我应该在第二类中创建第一类对象并调用第一类方法。
  2. 我应该创建基类并扩展它吗?
  3. 如果可能,请提供任何示例 感谢

2 个答案:

答案 0 :(得分:1)

好的,让我在这里回答:

class MyBase
{
    void Login()
    {
        // TODO base defined login here
    }
}

class FirstClass extends MyBase
{
    // Define your methods in any order it is fine

    void Login()
    {
        // TODO firstclass defined login here
    }

    void addTest()
    {
        // Addtest code here
    }
}

int main()
{
    MyBase base;
    FirstClass firstClass;

    base.Login() // Will call the MyBase method for Login
    firstClass.Login() // Will call the FirstClass method for Login
}

因此,只要你很好地完成它们,定义方法的顺序并不重要。如果可能的话,请阅读Java中的Inheritance,以便更清楚地了解您的方法。

你现在完全明白了吗?如果是,那么开始编码,如果没有,那么让我知道,我们会更深入......

答案 1 :(得分:1)

我建议实现Page Object Model,并将登录代码重构为表示登录屏幕的对象的方法。这样,登录代码将最容易用于需要执行登录的任何测试用例。代码看起来像这个简化版本:

public class LogInScreen {

    public void LogIn(String username, String password) {
        userNameTextField.sendKeys(username);
        passwordTextField.sendKeys(password);
        loginButton.click();
    }

public class MyTests {

    @Test
    public void testLoginNormalUser() {
        String username = "userA";
        String password = "badg3rs";
        publicscreen.LogIn(username, password);
        // carry on with the rest of the test.
    }

    @Test
    public void testLoginAdminUser() {
        String username = "userB";
        String password = "3lk";
        publicscreen.LogIn(username, password);
        // carry on with the rest of the test.
    }

请注意您从中获得的好处:

  1. 与登录控件交互的代码位于表示登录屏幕的类中;测试用例代码不需要过多地关注UI细节,因此每个@test只能关注测试逻辑。
  2. 任何测试用例都可以调用login()方法。
  3. 很简单:不需要继承或重载。