2012-03-25 6 views
5

В Android-разработчиках я видел, что метод testPreconditions() должен запускаться перед всеми тестами. Но в моем приложении тест, он действует как обычный тест. Он не запускается перед всеми тестами. Здесь что-то не так ?Android Test testПодробности

Приведено описание объекта testPreconditions() разработчика Android: «Тест предварительных условий проверяет исходные условия приложения перед выполнением других тестов. Он похож на setUp(), но с меньшими накладными расходами, поскольку он работает только один раз. "

+0

Согласно учебнику Андроида (http://developer.android.com/tools/testing/activity_test.html#AddPreConditionsTest), это testPreConditions с в верхнем регистре C. – nbilal

+0

Дело не имеет значения. Ни testPreconditions(), ни testPreConditions() не будут работать в любом заданном порядке. –

ответ

0

Убедитесь, что вы унаследовав от правого класса (ActivityInstrumentationTestCase2), и что ваш метод подписи соответствует:

public void testPreconditions() 
+0

Хорошо, спасибо за напоминание. – manshuai

6

На самом деле, testPreconditions() это просто еще один тестовый модуль. Вот цитата из «Android Application Testing Guide», книга Диего Торрес Milano:. Метод

"В testPreconditions Этот метод используется для проверки некоторых начальных условий для правильной работы наших тестов Несмотря на свое название, это не гарантируется, что этот тест выполняется перед другими тестами. Однако хорошей практикой является сбор всех предварительных тестов под этим пользовательским именем ».

Milano, Diego Torres (2011-06-23). Руководство по тестированию приложений для Android (стр. 76). Packt Publishing. Kindle Edition.

+2

Почему это считается хорошей практикой, если оно не гарантируется для запуска перед другими испытаниями? Я мог бы понять, был ли это первый тестовый запуск после setup(), но поскольку это действительно не имеет никакого значения, так как я могу провалить все свои тесты, прежде чем тест на предварительное условие будет запущен. Пять обезьян? http://johnstepper.com/2013/10/26/the-five-monkeys-experiment-with-a-new-lesson/ –

+0

@BillMote Это просто соглашение, помогающее быстрее устранять неисправные тесты. Если условия testPreconditions не совпадают с несколькими тестами в этом тестовом классе, вы сможете игнорировать другие неудачи тестов и сосредоточиться на том, почему предпосылки не были выполнены. См. Http://developer.android.com/tools/testing/activity_test.html#TestFailure –

+1

Я прочитал сайт разработчика и этот пост. Я понимаю вашу мысль. Я просто не уверен, что согласен с утверждением, что «это хорошая практика», однако я бы тоже не назвал это плохой практикой. LOL –

1

По образцам Android SDK:

The name 'test preconditions' is a convention to signal that if this 
    test doesn't pass, the test case was not set up properly and it might 
    explain any and all failures in other tests. This is not guaranteed 
    to run before other tests, as junit uses reflection to find the tests.