Насмешка непубличных статических методов в абстрактных классах с JMockit?

Termux заявляет, что он не работает как традиционный Linux bash, так как он устанавливает свою собственную среду виртуального выхода при первой настройке в своем каталоге данных в /data/data/com.termux/files/usr, см. [116 ] здесь и здесь Кроме того, в соответствии с официальными документами по Android , методом exec(command),

Выполняет указанную строковую команду в отдельный процесс.

Это удобный метод. Вызов формы exec (команда) ведет себя точно так же, как и вызов exec (команда, ноль, ноль).

blockquote>

Так что, если это отдельный процесс, при выполнении команды он будет запускаться внутри каталога этого процесса (каждый процесс в Linux получает свой каталог и получает PID, который использует os). Так что команда ls дает вам просто то, что находится внутри каталога этого процесса. Вы должны быть где-то вроде /proc/31415/, и есть только файл acct (cgroup в обычном Linux).

Что вы должны сделать, это запустить команду внутри каталога, объявив ее при вызове getRuntime (). Exec (), чтобы найти нужную вам нужную ссылку, перейдите по ссылке выше. Я бы предложил использовать переопределение, которое обрабатывает все параметры. Вам понадобится что-то вроде этого:

String[] cmd = {"mkdir", "testDir"};
File env =  new File(getFilesDir().getAbsolutePath());
Runtime.getRuntime().exec(cmd, null, env);

Кроме того, не помешает взглянуть на установочный код Termux (exec (). Это даст вам хороший результат). пропустите настройку среды и работу с основными командами.

Кроме того, я думаю, что вы уже сделали это, но дважды проверьте, чтобы убедиться, что вы запрашиваете WRITE_EXTERNAL_STORAGE разрешение для вашего приложения. [ 1116]

7
задан Epaga 22 October 2008 в 07:42
поделиться

1 ответ

Найденный решением: просто необходимо обнародовать метод насмешки (исходный метод может остаться в своей исходной видимости).

Я не знаю, почему это работает, в то время как исходный путь не делает (кто-то, кто делает больше, чем приветствие для вмешиваний), но все, что необходимо сделать, просто изменить ложный класс в примере выше к:

public class MockParent {
    public static String method() {
        return "MOCK";
    }
}
6
ответ дан 7 December 2019 в 01:28
поделиться
Другие вопросы по тегам:

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