При запуске с помощью значка на главном экране Android всегда будет запускать действие с фильтром android.intent.action.MAIN
в вашем AndroidManifest.xml
, если приложение уже не запущено (в этом случае оно, очевидно, будет восстанавливать активность поверх стека).
Чтобы достичь описанного, вы можете просто сохранить последнее видимое действие в SharedPreferences
и иметь Dispatcher активность, которая запускает последнее действие в соответствии с предпочтениями.
Итак, в каждом действии, который вы хотите перезапустить автоматически:
@Override
protected void onPause() {
super.onPause();
SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
Editor editor = prefs.edit();
editor.putString("lastActivity", getClass().getName());
editor.commit();
}
И активность Dispatcher аналогична следующей:
public class Dispatcher extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Class<?> activityClass;
try {
SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
activityClass = Class.forName(
prefs.getString("lastActivity", Activity1.class.getName()));
} catch(ClassNotFoundException ex) {
activityClass = Activity1.class;
}
startActivity(new Intent(this, activityClass));
}
}
Замечания
onPause
android.intent.action.MAIN
action Модульный тест : Укажите и протестируйте одну точку контракта отдельного метода класса. Это должно иметь очень узкий и четко определенный объем. Сложные зависимости и взаимодействия к внешнему миру заблокированы или дразнили .
Интеграционный тест : Протестируйте корректное взаимодействие нескольких подсистем. Существует целый спектр там, от тестирования интеграции между двумя классами, к тестированию интеграции с продуктивной средой.
Испытание с помощью дыма (иначе Проверка работоспособности) : тест простой интеграции, где мы просто проверяем, что, когда система под тестом вызывается, он обычно возвращается и не аварийно завершается.
Регрессионный тест : тест, который был записан, когда ошибка была исправлена. Это гарантирует, что эта определенная ошибка не произойдет снова. Полное имя является "нерегрессионным тестом". Это может также быть тест, сделанный до изменения приложения, чтобы удостовериться, что приложение обеспечивает тот же результат.
К этому, я добавлю:
Приемочное испытание : Тест, что функция или вариант использования правильно реализованы. Это подобно интеграционному тесту, но с вниманием на вариант использования для обеспечения, а не на включенные компоненты.
Тестирование системы : Тестирует систему как черный квадрат. Зависимости от других систем часто дразнят или блокируют во время теста (иначе, это было бы больше интеграционного теста).
Проверка перед полетом : Тесты, которые повторяются в подобной производству среде, для облегчения, 'основываются на моей машине' синдром. Часто это понято путем выполнения приемочного испытания или испытания с помощью дыма в производстве как среда.
Некоторые хорошие ответы уже, но я хотел бы, далее совершенствовали их:
Поблочное тестирование является единственной формой тестирования методом "белого ящика" здесь. Другие - тестирование методом "черного ящика". Тестирование методом "белого ящика" означает знание входа Вы знаете внутренние работы механизма и можете осмотреть его, и Вы знаете вывод. С тестированием методом "черного ящика" Вы только знаете то, что вход и каков вывод должен быть.
, Таким образом, явно поблочное тестирование является единственным тестированием методом "белого ящика" здесь.
rails -(query)-> database -(result)-> rails
. К сожалению, я don' t знают горячий делать это с интерфейсом запросов направляющих. Кто-либо знает?
– pablo
7 November 2013 в 21:54
У всех будут немного отличающиеся определения, и часто существуют серые области. Однако:
недостоверные исторические мелочи: "испытание с помощью дыма" прибывает из подводной разработки (наследованный от инфраструктуры), где литеральный дым был бы накачан в оболочку, чтобы видеть, вышел ли какой-либо из него снова, который был бы скорее поразительным отказом для подводной лодки!
Модульный тест: Проверка, что конкретный компонент (т.е. класс) созданные или модифицированные функции, как разработано. Этот тест может быть ручным или автоматизирован, но не перемещается вне границы компонента.
Интеграционный тест: Проверка, что взаимодействие конкретных компонентов функционирует, как разработано. Интеграционные тесты могут быть выполнены на уровне единицы или системном уровне. Эти тесты могут быть ручными или автоматизированы.
Регрессионный тест: Проверка, что новые дефекты не вводятся в существующий код. Эти тесты могут быть ручными или автоматизированы.
В зависимости от Вашего SDLC (водопад, rup, гибкий, и т.д.) конкретные тесты могут быть выполнены в 'фазах' или могут все быть выполнены, более или менее, одновременно. Например, поблочное тестирование может быть ограничено разработчиками, которые тогда передают код тестерам для интеграционного и регрессионного тестирования. Однако другой подход мог бы иметь разработчиков, делающих поблочное тестирование и некоторый уровень интеграционного и регрессионного тестирования (использующий подход TDD наряду с непрерывной интеграцией, и автоматизировал модульные и регрессионные тесты).
комплект инструментальных средств будет зависеть в основном от кодовой базы, но существует много инструментов с открытым исходным кодом для поблочного тестирования (JUnit). (Ртутный) QTP HP или Silktest Borland являются оба инструментами для автоматизированного интеграционного и регрессионного тестирования.