Как проверить защищенный унаследованный метод из суперкласса в другом пакете

Метод plot возвращает объекты, содержащие информацию о каждой строке в графике в виде списка. В python вы можете развернуть элементы списка с запятой. Например, если вы построили две строки, вы должны сделать:

line1, line2 = plt.plot(x,y,'-',x,z,':')

Где line1 будет соответствовать x,y, а строка2 соответствует x,z. В вашем примере есть только одна строка, поэтому вам нужна запятая, чтобы сообщить ей о расширении списка из 1 элемента. То, что у вас есть, эквивалентно

line = plt.plot(x,y,'-')[0]

или

line = ply.plot(x,y,'-')
line = line[0]

Ваш код должен работать, если вы опустите запятую, только потому, что вы не используете line. В вашем простом примере plt.plot(x,y,'-') будет достаточно.

1
задан Sahand 20 February 2019 в 16:17
поделиться

2 ответа

Я лично создал бы тест для класса А, в вашем тесте использовал бы фиктивную реализацию, а затем протестировал бы вашу функцию. Таким образом, проверка не требуется для каждой реализации.

0
ответ дан Todoy 20 February 2019 в 16:17
поделиться

Я согласен с другим ответом в том, что вы должны написать Test для класса A в его пакете, потому что вы тестируете функциональность A, а не AImp, но если вы действительно хотите получить доступ Защищенные (или даже частные) методы вы можете сделать это следующим образом:

@Test
    public void testProtectedMethodFromSuperClass(){
        AImp aimp = new AImp();

        Method get10IntMethod = AImp.class.getDeclaredMethod("get10Int");
        get10IntMethod.setAccessible(true);

        List<Integer> result = (List<Integer>) get10IntMethod.invoke(aimp);

        assertEquals(result.size(), 10);
    }

И если вы хотите вызвать метод с аргументами (например, otherMethod(int)), вы должны передать типы аргументов в getDeclaredMethod() как это: getDeclaredMethod("otherMethod", int.class) и аргументы для вызова: method.invoke(instance, 5).

0
ответ дан benediktwerner 20 February 2019 в 16:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: