Куда я должен поместить свои тесты JUnit?

Dynamodb лучше всего подходит для значения ключа Insert and Retrieval.

Он не поддерживает функцию поиска, если вы пытаетесь выполнить сканирование с некоторым условием, которое будет O (n), и это будет очень дорого, так как вы потребляете много емкости для чтения.

Теперь перейдем к опциям

  1. Если вариант использования - это не полнотекстовый поиск, а только совпадение значения ключа, вы можете попытаться придумать композитный ключ , но он будет иметь недостатки, такие как

    а. Не может изменить схему впоследствии и может потребовать огромных усилий, если вам нужно искать в новом поле.

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

  2. Идеальным решением является использование упругого поиска или индексации Solr. У вас может быть лямбда-функция, слушающая поток DynamodB, выполняющая преобразование и помещающая данные вasticsearch Но это будет иметь ограничения, такие как

    а. Кластер эластичного поиска является дорогостоящим .

48
задан Michael Myers 2 June 2009 в 05:16
поделиться

4 ответа

The way we do our JUnit test cases is to put them in the same package, but in a different root directory. Since we use Maven, we just use the standard locations making the structure similar to the following.

src/main/java/com/foo/Bar.java
src/test/java/com/foo/BarTest.java

Obviously there's more to the structure, but this lets us build the tests separately from the mainline code, but still access protected classes and the like. With respect to different types of tests, this is very subjective. When we started our testing effort (which unfortunately started after development), I tried to keep things pretty isolated. Unfortunately, it quickly became a nightmare when we got to the 500+ test case point. I've since tried to do more consolidation. This led to reduced amounts of code to maintain. As I said, though, it's very subjective.

As far as test-only code, we keep it in a separate com.foo.test package that resides only in the src/test/java tree.

62
ответ дан 7 November 2019 в 12:36
поделиться

Keeping it the same package allows you to use package-private visibility for code that is intended to be accessed via the test only.

Regarding using separate root directories, that is a good practice. It also has an advantage for us, since we use IDEA, IDEA recognizes that production code cannot reference test code.

In terms of keeping them separate, there is a great power in having one, and only one, test class per production class at the unit level. Of course, some classes get created in production as part of refactoring that have no test classes at all, and that is fine, but when you want to know what test tests a certain class, having a convention that says ClassNameTest is the tests for ClassName is very helpful.

TestNG is much friendlier to this paradigm than JUnit, though.

4
ответ дан 7 November 2019 в 12:36
поделиться

Тестовые классы должны быть скорее в разных пакетах, их легче отделить от производственного кода, когда вы упаковываете его для выпуска. Я обычно храню множество тестовых пакетов в этих пакетах, всевозможные насмешки, конфигурации, сценарии ... Но когда вы строите - это не получается. В некоторых ситуациях рекомендуется проводить тестирование даже в разных проектах. Зависит.

3
ответ дан 7 November 2019 в 12:36
поделиться

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

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

5
ответ дан 7 November 2019 в 12:36
поделиться
Другие вопросы по тегам:

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