2017-09-08 84 views
12

Właśnie zaczynam naukę jBehave i Maven (w Eclipse). Mam zainstalowane JBehave Eclipse 1.0.0.20140605-071 i dodaje go do moich zależnościami Maven - odpowiedni kawałek pom.xml wygląda (wydanej po odpowiedzi):Maven nie widzi jBehave

<dependencies> 
    <dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>4.12</version> 
    <scope>test</scope> 
    </dependency> 
    <dependency> 
    <groupId>org.wmaop</groupId> 
    <artifactId>wm-jbehave</artifactId> 
    <version>1.0.0</version> 
    <scope>test</scope> 
    </dependency> 
</dependencies> 
<repositories> 
    <repository> 
    <id>jitpack.io</id> 
    <url>https://jitpack.io</url> 
    </repository> 
</repositories> 

który daje mi błąd:

missing artefact org.wmaop:wm-jbehave.jar:1.0.0 

gdy próbuję zbudować otrzymuję błąd:

Failure to find org.wmaop:wm-jbehave:jar:1.0.0 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1] 

„Tworzenie projektu testowego z maven” tutorial mówi „Jeśli istnieją błędy w projekcie, otwórz plik pom.xml w celu sprawdzenia, czy wm-jbeh nie znaleziono zależności. Sprawdź, czy twój projektant ma dostęp do Internetu w celu pobrania zależności słoików ", ale nie wiem, co to oznacza - komputer z pewnością ma dostęp do Internetu - wpisuję to na nim.

jak mogę rozwiązać ten problem?

+0

Czy potrzebujesz tylko uczyć się [JBehave] (http://jbehave.org/) w Eclipse? A może chcesz użyć [narzędzi testowych do webMethods Integration Suite WM-AOP] (https://github.com/wmaop), aby uruchomić historie JBehave? Wszystkie twoje problemy wynikają z braku bibliotek WM-AOP, może lepiej byłoby rozpocząć naukę JBehave samodzielnie bez dodatkowej złożoności struktury WM-AOM? JBehave nie potrzebuje WM_AOM, może działać na wielu frameworkach, nawet bez żadnego frameworka po prostu z linii poleceń. – krokodilko

+0

Jestem przyzwyczajony do BDD używając Ogórek i Rubin. Zasadniczo chcę podobne środowisko dla Java, i JBehave wydaje się być najbardziej prawdopodobnym kandydatem (a Eclipse jest moim preferowanym IDE). Mój problem polega po prostu na tym, że nie mogę uruchomić instrukcji instalacji - nie jestem nawet pewien, gdzie znajduje się WM-AOP, poza tym, że jest wspomniany w komunikacie o błędzie, który dostaję. – digitig

Odpowiedz

4

o ile widzę, że nie jest na Maven centralnym repo więc nie wodner, ale jest dostępny na GitHub więc pozwala sprowadzić go z ther wykorzystaniem JitPack

Dodaj to do Twój POM

<repositories> 
    <repository> 
     <id>jitpack.io</id> 
     <url>https://jitpack.io</url> 
    </repository> 
</repositories> 
+0

Po prostu nie dodaje się tego, nie aktualizuje się projektu po jego dodaniu ani budowaniu. Czy jest coś, co muszę zrobić, aby zmusić do pobrania? – digitig

+0

Wygląda na to, że będziesz musiał sam go zbudować. https://github.com/wmaop/wm-jbehave/releases. Pamiętaj tylko, aby dołączyć także pom-rodzic. – Antoniossss

+0

Jak dołączyć pom-rodzic? To mój pierwszy dzień korzystania z Mavena ... – digitig

3

spróbuj zamiast tego repo: https://repo.azure.jenkins.io/public.

Albo zbudować projekt w lokalnym:

git clone https://github.com/wmaop/wm-jbehave.git --branch wm-jbehave-1.0.0 
cd wm-jbehave 
mvn clean install 
+0

Dodanie tego repo nic nie zmieniło. Podążając za lokalnymi instrukcjami kompilacji, otrzymałem znany błąd: [ERROR] Projekt org.wmaop: wm-jbehave: 1.0.0 (C: \ Users \ digit \ Desktop \ jbehave \ wm-jbehave \ pom.xml) ma 1 błąd [BŁĄD] Nierozpoznawalny macierzysty POM dla org.wmaop: wm-jbehave: 1.0.0: Nie można znaleźć org.wmaop: wm-parent: pom: 1.0.5 w https: //repo.maven. apache.org/maven2 zostało zbuforowane w lokalnym repozytorium, rozdzielczość nie zostanie ponownie sprawdzona, dopóki nie upłynie okres aktualizacji centrali lub aktualizacje będą wymuszone, a punkty "parent.relativePath" w niewłaściwym lokalnym wierszu POM @ 8, kolumna 10 – digitig

+0

. pozostać w wersji 1.0.0 vm jbehaven lub możesz spróbować innej wersji? jeśli tak, spróbuj innej wersji: wersja 1.1.0 wydaje się łatwiejsza do znalezienia. – sab

6

I'm not even sure where WM-AOP fits in, except that it's mentioned in the error message I get.

Wydaje się, że nie wiem nawet, co WM-AOP jest :)
Ten tutorial (z pytaniem) pokazuje, jak włączyć i uruchom JBehave razem z ich webMethods Designer.
Innymi słowy - jest to samodzielny produkt (serwer integracyjny), który korzysta z innego samodzielnego projektu. JBehave
Aby uruchomić ten samouczek, musisz najpierw uzyskać download, install and configure webMethods Designer & Integration Server Flow services., a następnie utworzyć projekt, który używa tego serwera i JBehave do uruchamiania testów na tym serwerze.


Ale nie potrzebujesz tych rzeczy do nauki JBehave. JBehave to samodzielny produkt, który można uruchomić w wielu środowiskach, nawet w czystej Jawie (JDK).

Wystarczy postępować zgodnie z poniższymi wskazówkami


1. W Eclipse - kliknij Nowy/projekt Maven enter image description here


2.Na kolejnym oknie dialogowym kliknij przycisk Dalej

enter image description here


3. Na następnej stronie w rodzaju "jbehave-simple-archetyp" wybierz wersję 4.1 i kliknij Dalej
Uwaga - nie używać najnowszej wersji 4.1.1, ponieważ nie działa (nie jest to błąd, który zostanie rozwiązany w nadchodzącej wersji 4.1.2 w 1-2 tygodnie enter image description here


4. Wprowadź identyfikator grupy i artefakt-ID swojego projektu i kliknij przycisk Zakończ enter image description here


To wszystko - projekt JBehave jest gotowy.


W src/main/resources/org/example/myJbehave/stories/ znajdziesz my.story z przykładowym historii:

Scenario: A scenario with some pending steps 

Given I am a pending step 
And I am still pending step 
When a good soul will implement me 
Then I shall be happy 

W src/main/java/org/example/myJbehave/steps/ znajdziesz MySteps.java klasę. Zmodyfikować go w ten sposób:

import org.jbehave.core.annotations.Alias; 
import org.jbehave.core.annotations.Given; 
import org.jbehave.core.annotations.Then; 
import org.jbehave.core.annotations.When; 

public class MySteps { 

    @Given("I am a pending step") 
    @Alias("I am still pending step") 
    public void given_i_am_pending_step() { 

     System.out.println("Tihis is implementation of GIVEN"); 
    } 

    @When("a good soul will implement me") 
    public void when_a_good_soul_will_implement_me() { 
     System.out.println("Tihis is implementation of WHEN"); 
    } 

    @Then("I shall be happy") 
    public void then_i_shall_be_happy() { 
     System.out.println("Tihis is implementation of THEN"); 
    } 
} 

W /src/main/java/org/example/myJbehave/ znajdziesz MyStories.java
Ta klasa zawiera konfigurację & bootstrap kodu
prawym przyciskiem myszy na nim za pomocą myszy, a następnie wybrać „Uruchom jako test/JUnit” , a historia zostanie wykonany enter image description here

enter image description here


Zobaczysz w zakładce konsoli wynik takiego:

Processing system properties {} 
Using controls EmbedderControls[batch=false,skip=false,generateViewAfterStories=true,ignoreFailureInStories=true,ignoreFailureInView=true,verboseFailures=false,verboseFiltering=false,storyTimeouts=60,threads=2,failOnStoryTimeout=false] 

(BeforeStories) 
Running story org/example/myJbehave/stories/my.story 
Tihis is implementation of GIVEN 
Tihis is implementation of GIVEN 
Tihis is implementation of WHEN 
Tihis is implementation of THEN 

(org/example/myJbehave/stories/my.story) 
Scenario: A scenario with some pending steps 
Given I am a pending step 
And I am still pending step 
When a good soul will implement me 
Then I shall be happy 



(AfterStories) 
Generating reports view to 'C:\Users\irko\eclipse-workspace1\myJbehave\target\jbehave' using formats '[stats, console, txt, html, xml]' and view properties '{navigator=ftl/jbehave-navigator.ftl, views=ftl/jbehave-views.ftl, reports=ftl/jbehave-reports.ftl, nonDecorated=ftl/jbehave-report-non-decorated.ftl, decorated=ftl/jbehave-report-decorated.ftl, maps=ftl/jbehave-maps.ftl}' 
Reports view generated with 2 stories (of which 0 pending) containing 1 scenarios (of which 0 pending) 

Uwaga: wykonaj these steps zainstalować JBehave Eclipse plugin, który zawiera przydatny *.story edytor.

+0

Nie, to nie powiedzie się w kroku 3. Ta strona nie pokazuje żadnych archetypów, a kiedy wprowadzę prosty typ archetypu, Eclipse ulega awarii z powodu błędu braku pamięci - przestrzeni sterty Java. Próbowałem już uruchomić Eclipse z -vmargs -Xmx1000M, ale nadal otrzymuję ten sam błąd. – digitig

+0

Ponadto, postępuj zgodnie z instrukcjami na https://howtodoinjava.com/tools/eclipse/how-to-import-maven-remote-archetype-catalogs-in-eclipse/, aby uzyskać lokalne kopie archetypów. błąd zmienia się na "Żadne wpisy na rynku nie dotyczą obsługi jbehave-maven-plugin: 4.1: unpack-view-resources w Eclipse. Więcej informacji znajdziesz w pomocy." Nie mogę znaleźć żadnej odpowiedniej pomocy. – digitig

1

Zgodnie błędu pisał:

„Failure znaleźć org.wmaop: WM-jbehave: jar: 1.0.0 w https://repo.maven.apache.org/maven2 został buforowane w lokalnym repozytorium, rozdzielczość nie będzie reattempted aż przedziale update centralny już minął lub aktualizacje są wymuszane -> [Pomoc 1] "

Wygląda na to, że projekt wymaga wymuszonej aktualizacji maven w celu usunięcia brakujących artefaktów. Wystarczy kliknąć prawym przyciskiem myszy projekt (y) -> Maven -> Zaktualizuj projekt. Upewnij się, że zaznaczona jest opcja "Wymuś aktualizację migawek/wersji".

0

Podpisy zależne od maven i repozytorium pracowały przy kompilacji przykładowego projektu maven na podstawie tutorial link in your question.

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.12</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.wmaop</groupId> 
     <artifactId>wm-jbehave</artifactId> 
     <version>1.1.1</version> 
     <scope>test</scope> 
     <exclusions> 
      <exclusion> 
       <groupId>com.entrust</groupId> 
       <artifactId>toolkit</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.softwareag.webmethods</groupId> 
       <artifactId>wm-isserver</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.softwareag.webmethods</groupId> 
       <artifactId>wm-isclient</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
</dependencies> 
<repositories> 
    <repository> 
     <id>bintray.io</id> 
     <url>https://dl.bintray.com/wmaop/maven</url> 
    </repository> 
</repositories> 

Uwaga: samouczek wymaga również dodatkowej konfiguracji do uruchamiania historii HelloWorld.

Być może łatwiej będzie zastosować się do odpowiedzi podanej przez @krokodilko za pomocą prostego archetypu jbehave maven.