Можем ли мы использовать JUNIT для автоматического тестирования интеграции?

Подобно графикам Авариса, но различным ....

import matplotlib.pyplot as plt
import numpy as np

#set linestyles (for-loop method)
colors=('k','y','m','c','b','g','r','#aaaaaa')
linestyles=('-','--','-.',':')
styles=[(color,linestyle) for linestyle in linestyles for color in colors]

#-- sample data
numLines=30
dataXaxis=np.arange(0,10)
dataYaxis=dataXaxis+np.array([np.arange(numLines)]).T


plt.figure(1)

#-----------
# -- array oriented method but I cannot set the line color and styles
# -- without changing Matplotlib code
plt.plot(datax[:,np.newaxis],datay.T)
plt.title('Default linestyles - array oriented programming')
#-----------

#-----------
# -- 'for loop' based approach to enable colors and linestyles to be specified

plt.figure(2)

for num in range(datay.sh![enter image description here][1]ape[0]):
    plt.plot(datax,datay[num,:],color=styles[num][0],ls=styles[num][1])
plt.title('User defined linestyles using for-loop programming')
#-----------

plt.show()
37
задан Eduardo Santa 13 November 2008 в 14:59
поделиться

8 ответов

Работы JUnit. Нет никаких ограничений, которые ограничивают его тем, чтобы быть модульными тестами только. Мы используем JUnit, Знатока и CruiseControl, чтобы сделать CI.

могут быть инструменты, которые специфичны для интеграционного тестирования, но я думал бы, что их полноценность зависит от того, какие компоненты системы Вы интегрируете. JUnit будет хорошо работать для не сертификационное испытание UI.

16
ответ дан Robin 13 November 2008 в 14:59
поделиться
  • 1
    @Kahunza После наличия беглого взгляда на документы для psycopg2 это появляется there' s аргумент, который может быть быть включенным в строку подключения that' s передал SQLAlchemy' функция s create_engine(). Возможно, один из специалистов по обслуживанию вмешается или I' ll спрашивают относительно своего списка. За Ваше здоровье! – Matty 18 April 2012 в 17:52

При использовании Знатока для разрабатывания проекта у меня было немного больше удачи с TestNG, потому что это имеет @BeforeSuite и @AfterSuite операции. Которые полезны, потому что Знаток не выполнит 'постинтеграционный тест', если какой-либо из интеграционных тестов перестанет работать. Не проблема с Муравьем, таким образом, я просто использую jUnit из предпочтения с ним.

В любом случае, сегментируя тесты и как TestNG и как jUnit делают полезно с интеграционными тестами также.

5
ответ дан sblundy 13 November 2008 в 14:59
поделиться

В нашей работе здесь, наше решение для интеграционного тестирования имеет три больших части:

  1. CruiseControl является основой нашей непрерывной методологии интеграции.
  2. Наша конфигурация CruiseControl начинает сборку быстрого теста в течение 3 минут после чьей-либо регистрации к Подрывная деятельность . Тесты, которые происходят здесь, "все все еще компилирует?" и "модульные тесты все все еще передают?". JUnit является, очевидно, крупным помощником в ответе на вторые вопросы.
  3. Каждый час, это начинает большую сборку, которая создает справку онлайн и установщики, которые мы используем на наших различных платформах развертывания. Этот шаг проверяет большие вопросы, у "нас все еще есть развертываемый продукт для каждой из наших целевых платформ?"

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

2
ответ дан Bob Cross 13 November 2008 в 14:59
поделиться
  • 1
    @GaurawYadav, против которого Он возражал, я думаю: p как он didn' t совместно используют код:) – AZ_ 4 March 2014 в 01:14

Да, можно использовать junit для интеграционных тестов, но он зависит от типа интеграционного теста, в котором Вы нуждаетесь.

Тестирование сервлета:

  • устанавливают контекст сервлета, и конфигурация
  • делают тесты с помощью ложных запросов сервлета (Spring имеет поддержку этого, но можно также использовать EasyMock или собственные насмешки)

Тестирование пружинного приложения:

  • использование AbstractDependencyInjectionSpringContextTests для установки контекста
  • тестируют проводные бобы
  • существуют также подклассы AbstractDependencyInjectionSpringContextTests, поддерживающего обработку транзакции при тестировании с базой данных.

, Но чистый Junit имеет его предел. Тестирование пользовательских интерфейсов является типичным случаем. Можно использовать селен для веб-приложений, soapui для веб-сервисов или других соответствующих инструментов.

, Но независимо от того, что Вы используете, должно быть возможно интегрировать его в Вашей сборке continious (круиз-контроль, город команды или безотносительно).

1
ответ дан Arne Burmeister 13 November 2008 в 14:59
поделиться

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

Вот подход, который работает хорошо на меня для приложений, которые используют http и базы данных, и я хочу проверить целый стек:

  1. Использование Hypersonic or H2 в режиме в оперативной памяти как замена для базы данных (это работает лучше всего на ORMs)
  2. Инициализируют базу данных в @BeforeSuite или эквивалентный (снова: самый легкий с ORMs)
  3. Причал Использования для запуска незавершенного веб-сервера.
  4. @Before каждый тест, очистите базу данных и инициализируйте с необходимыми данными
  5. Использование JWebUnit для выполнения Запросов HTTP к Причалу

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

Здесь часть кода я использую:

@BeforeClass
public static void startServer() throws Exception {
    System.setProperty("hibernate.hbm2ddl.auto", "create");
    System.setProperty("hibernate.dialect", "...");
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setJdbcUrl("jdbc:hsqldb:mem:mytest");
    new org.mortbay.jetty.plus.naming.Resource(
             "jdbc/primaryDs", dataSource);


    Server server = new Server(0);
    WebAppContext webAppContext = new WebAppContext("src/main/webapp", "/");
    server.addHandler(webAppContext);
    server.start();
    webServerPort = server.getConnectors()[0].getLocalPort();
}

// From JWebUnit
private WebTestCase tester = new WebTestCase();

@Before
public void createTestContext() {
    tester.getTestContext().setBaseUrl("http://localhost:" + webServerPort + "/");
    dao.deleteAll(dao.find(Product.class));
    dao.flushChanges();
}

@Test
public void createNewProduct() throws Exception {
    String productName = uniqueName("product");
    int price = 54222;

    tester.beginAt("/products/new.html");
    tester.setTextField("productName", productName);
    tester.setTextField("price", Integer.toString(price));
    tester.submit("Create");

    Collection<Product> products = dao.find(Product.class);
    assertEquals(1, products.size());
    Product product = products.iterator().next();
    assertEquals(productName, product.getProductName());
    assertEquals(price, product.getPrice());
}

Для тех, кто хотел бы знать больше, я записал статья о Встроенных Интеграционных тестах с Причалом и JWebUnit на Java.net.

42
ответ дан Johannes Brodwall 13 November 2008 в 14:59
поделиться

Определенно! Мы используем комбинацию JUnit, задачи Ant для выполнения их, и , Гудзон для продолжает интеграционные тесты. Работы как очарование.

0
ответ дан eishay 13 November 2008 в 14:59
поделиться
  • 1
    К вашему сведению объемные операции обновления кэша рассматриваются в Гуаве выпуск 971 . – Louis Wasserman 13 July 2012 в 16:16

Предложение зависит от Вашего приложения и Вашей цели.

я записал интеграционные тесты в JUnit, но я также видел, что люди используют HtmlUnit (расширение JUnit), Селен, Watir, Соответствие/Фитнес и даже коммерческие инструменты как WinRunner и Шелк.

Так говорят нам немного больше о Вашем домене и целях Ваших тестов, и можно, вероятно, получить лучший ответ.

0
ответ дан Jeffrey Fredrick 13 November 2008 в 14:59
поделиться

Существует очень хорошее расширение для JUnit под названием Jitr.

Jitr - это средство запуска тестов интеграции JUnit, которое позволяет легко запускать тесты интеграции вашего веб-приложения с легким веб-контейнером в том же JVM в качестве ваших тестов.

Подробности см. На их сайте: http://www.jitr.org/

0
ответ дан 27 November 2019 в 02:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: