2009-07-13 11 views
8

Wydaje się, że kiedy wykonuję "ruch", refaktoryzacja wszystkich moich testów na jednym miejscu leży na jego starym miejscu. Często testuję widoczne klasy "paczki", więc stają się niewidoczne, jeśli SUT przenosi się do innej paczki.Intellij Idea "Przenieś refaktoryzację" za pomocą testów Junit

Czy przenosisz testy ręcznie?

+0

Obawiam się, że nie mogę zrozumieć Twojego pytania. Czy mógłbyś podać więcej informacji? To może pomóc w udzieleniu odpowiedzi na to pytanie (+1, aby móc komentować) – guerda

+0

Załóżmy, że mam klasę AAA w pakiecie xxx. Przeznaczeniem klasy jest src/xxx/AAA.java i przypuśćmy, że test znajduje się w teście/xxx/AAATest.java Tak więc, kiedy przenoszę klasę AAA do pakietu yyy, mój test pozostaje w pakiecie xxx. – dmitrynikolaev

Odpowiedz

2

mam 4 opcje dla ciebie!.

  1. Idź do „pakietu” widoku w lewo, wybierz oba pliki, a następnie naciśnij klawisz F6 To shoul d przenieś je oboje w odpowiednie miejsce.

  2. Upublicznij klasę, zanim zrobisz refaktor, a następnie wróć.

  3. Spróbuj najpierw przenieść test. Wydaje mi się, że pamiętam, że unika łamania żadnej z zależności.

  4. Istnieje wtyczka (myślę, że to toggleTest lub unitTest - Miałem oba z nich zainstalowane), które łata Move Refactor, aby również przynieść test z nim. Pracował świetnie. Niestety wygląda na to, że mogą nie działać z najnowszym IDEA.

0

Zachowanie, które opisujesz, jest całkowicie normalne.

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

W swojej ATest.java Jest takie import package1.A;.
Po Twój refactored, wygląda to tak: Kod

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

Test tam, gdzie był. Nie przeniosłeś kodu testowego, ale kod źródłowy. Nie powinno to wpływać na żadne inne foldery (jak w twoim przykładzie).
Numer referencyjny w ATest.java musi teraz być import package2.A;. W przeciwnym razie refaktoryzacja poszła nie tak.

Mimo to twoje testy powinny zadziałać, nawet jeśli znajdują się w innym katalogu. To dlatego, że import został zmieniony metodą refaktoryzacji.

Jeśli chcesz oczyścić swoją strukturę folderów, musisz ręcznie zmienić nazwę pakietu test/package1 do test/package2 (wiem, pakiet jest package1 i package2 ale chcę wzmocnić nacisk na struktury folderów.

mam nadzieję, że mogę pomóc

Powiązane problemy