Ваш вопрос довольно общий, поэтому трудно дать конкретный ответ. Во всяком случае, я стараюсь :-)
Я понимаю, что код уже написан, так что практически вы работаете с устаревшим кодом. Рекомендуемое чтение для такой ситуации - Working Effectively With Legacy Code от Michael Feathers.
В целом, исключить элементы GUI для тестирования модулей. Поэтому самое главное - попытаться отделить логику, которая будет проверена от кода GUI, в POJO, которые легче выполнять модульные тесты. Затем начните писать модульные тесты для классов, содержащих логику, один за другим ... сначала попробуйте выбрать наиболее важные части кода, чтобы максимизировать возврат инвестиций. Часто хороший способ достичь этого - это просто, когда вы касаетесь класса/метода, пишите для него единичные тесты. Таким образом, вы можете постепенно увеличить охват кода.
Вы не делаете блок тест свинг приложений. Вы тестируете функциональность под качающимся приложением, каждый по отдельности. Затем вы получаете функциональные тесты для самого приложения. – corsiKa
Попытка достичь «почти» полного покрытия линии не должна быть целью как таковой. Остерегайтесь таких целей, они часто приводят к ложному чувству безопасности (например, полный охват, но не проводятся реальные испытания). Цель должна заключаться в том, чтобы охватить как можно более рискованный (сложный) код, убедившись, что тесты актуальны. – jfpoilpret