Мы проводим все тесты в одном огромном наборе. Бег занимает 7 минут.
Наши интеграционные тесты создают фиктивные серверы. Они никогда не истекают - кроме случаев, когда тест требует, чтобы сервер истек.
Итак, у нас есть следующие виды вещей. (Пример кода Python)
class SomeIntegrationTest( unittest.TestCase ):
def setUp( self ):
testclient.StartVendorMockServer( 18000 ) # port number
self.connection = applicationLibrary.connect( 'localhost', 18000 )
def test_should_do_this( self ):
self.connection.this()
self.assert...
def tearDown( self ):
testClient.KillVendorMockServer( 18000 )
Это имеет некоторые ограничения - он всегда разветвляет клиентский макет сервера для каждого теста. Иногда это нормально, а иногда слишком много начинается и останавливается.
У нас также есть следующие вещи
class SomeIntegrationTest( unittest.TestCase ):
def setUp( self ):
self.connection = applicationLibrary.connect( 'localhost', 18000 )
def test_should_do_this( self ):
self.connection.this()
self.assert...
if __name__ == "__main__":
testclient.StartVendorMockServer( 18000 ) # port number
result= unittest.TextTestRunner().run()
testclient.KillVendorMockServer( 18000 )
system.exit( result.failures + result.errors )
Для поддержки этого тестирования у нас есть несколько макетированных серверов для различных видов интеграционных тестов.