можно ли использовать powermock для проверки статических методов - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть два следующих класса:

public class Prod
{   
    public  void logon(){        
        System.out.println("'\u000CProd  logon");        
        addUser();        
    }
        public  void addUser(){     
        System.out.println("Prod  addUser");
    }
}

public class Dev extends Prod
{
    public void addUser(){     
       System.out.println("Dev  addUser");
    }    
    public static void main(String[] args){         
       Dev test = new Dev(); 
       test.logon(); 
    }   
}

Есть ли способ сделать все методы статичными и затем проверить, правильно ли работает Dev.addUser ()?

Вотчто я хотел бы иметь:

public class Prod
{   
    public static void logon(){        
        System.out.println("'\u000CProd  logon");        
        addUser();        
    }
        public static void addUser(){     
        System.out.println("Prod  addUser");
    }
}

public class Dev extends Prod
{
    public static void addUser(){     
       System.out.println("Dev  addUser");
    }    
    public static void main(String[] args){  
       logon(); 
    }   
}

Когда я запускаю main () в Dev, мы должны получить:

Prod logon

DevaddUser

1 Ответ

0 голосов
/ 18 декабря 2018

Есть ли способ сделать все методы статичными, а затем проверить, правильно ли работает Dev.addUser ()?

Нет, нет.

Это действительно фундаментальная Java: вы хотите использовать статические методы в полиморфном контексте.Но статические методы не полиморфны.Нет истинного наследования, есть нет над записью статических методов.См. здесь для подробных объяснений, почему это так.Повторяю: желаемый результат не может быть достигнут чисто статическим способом, построенным вокруг класса A, расширяющего класс B. Конец истории.

И, как уже было сказано: это также неправильно с концептуальной точки зрения.Из-за таких ограничений static следует осторожно использовать только в Java.Просто используйте нестатический код, который у вас есть прямо сейчас.

К сожалению, ваш вопрос не совсем понятен, что именно вы намереваетесь проверить , поэтому я не могу помочь с этой частью.

...