Spring Framework - Проект модульного тестирования - PullRequest
5 голосов
/ 09 июля 2011

Я пишу, чтобы попытаться инициировать небольшую дискуссию, касающуюся тестирования Spring Unit и, в частности, транзакционных модульных тестов.

В настоящее время у нас есть около 441 теста в различных классах, помеченных так:

@RunWith(SpringJUnit4ClassRunner.class)
@TransactionConfiguration
@ContextConfiguration(locations={"/context/ServiceTest-context.xml"}, inheritLocations=false)
public class ServiceTests extends AbstractTransactionalJUnit4SpringContextTests {

    @Test
    public void testSomething() {}

    @Test
    public void testSomethingElse() {}
}

Каждый из наших классов тестов имеет свой собственный контекст теста.

Мы столкнулись с проблемой, при которой при запуске отдельных классов тестирования или отдельных пакетов тесты выполняются нормально.

Однако, когда мы хотим увеличить его, чтобы запустить ВСЕ наши тесты (в настоящее время> 400), используя maven или что-то подобное, например, интеграцию Hudson.

mvn test

Мы подошли к точке и затем начали испытывать ошибки превышения лимита GC Java.

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

Может кто-нибудь поделиться своим опытом и тем, как они решили подобную проблему?

Яйцо

1 Ответ

1 голос
/ 15 октября 2011

Я почти уверен, что контейнер будет поддерживать все контексты в течение всего жизненного цикла, если вы явно не вызовете appCtx.close ()

. Есть ли какая-то особая причина, по которой каждый тест имеет свойсобственный контекст?Потому что, если у тебя нет особой причины для этого ... Я бы сказал, не делай этого.Пока у вас есть подходящие методы настройки и разрыва, вы должны иметь возможность поделиться.Даже если вы группируете похожие тесты вместе и имеете только те общие контексты.Больше информации, пожалуйста!

...