Рефакторинг перемещения “Идеи Intellij” с тестами Junit

Более легкий способ загрузить настройки по умолчанию из набора (в реальной жизни я использую его для заполнения настроек из любого источника, включая командную строку, параметры ClickOnce URL и т.д.):

public static void LoadFrom(this ApplicationSettingsBase settings, NameValueCollection configuration)
{
    if (configuration != null)
        foreach (string key in configuration.AllKeys)
            if (!String.IsNullOrEmpty(key))
                try
                {
                    settings[key] = configuration.Get(key);
                }
                catch (SettingsPropertyNotFoundException)
                {
                  // handle bad arguments as you wish
                }
}

Пример:

Settings.Default.LoadFrom(new NameValueCollection() { { "Setting1", "Value1" }, { "Setting2", "Value2" } });
9
задан Alex B 25 August 2009 в 08:09
поделиться

2 ответа

У меня для вас есть 4 варианта:

  1. Перейдите в представление «Пакет» слева, выберите оба файла и нажмите F6. Он должен переместить их оба в нужное место.

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

  3. Попробуйте сначала переместить тест. Кажется, я помню, что это позволяет избежать нарушения каких-либо зависимостей.

  4. Существует плагин (я думаю, что это toggleTest или unitTest - у меня были установлены оба из них), который исправляет Переместите Refactor, чтобы тоже принести с собой тест. Сработало отлично. К сожалению, похоже, что они могут не работать с последней версией IDEA.

3
ответ дан 3 November 2019 в 08:21
поделиться

Поведение, которое вы описываете, совершенно нормально.

src/package1/A.java
test/package1/ATest.java

В вашем ATest.java есть import package1.A; .
. После вашего рефакторинга это выглядит так:

src/package2/A.java
test/package1/ATest.java

Тестовый код остался на месте. Вы переместили не тестовый код, а свой исходный код. Это не должно повлиять на другие папки (как в вашем примере).
Ссылка в ATest.java теперь должна быть import package2.A; . В противном случае рефакторинг пошел не так, как надо.

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

Если вы хотите очистить структуру папок, вам нужно вручную переименовать пакет test / package1 в test / package2 (Я знаю, что это пакет1 и пакет2 , но я хочу сосредоточить внимание на структуре папок.

Надеюсь, я смогу вам помочь!

0
ответ дан 3 November 2019 в 08:21
поделиться
Другие вопросы по тегам:

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