2017-09-28 5 views
0

Considérez que j'ai ci-dessous les fichiers de fonction:Appeler un fichier caractéristique d'une autre fonction dans le concombre

Login.feature

Feature: Login on website 

Scenario: Login verification on site 
    Given Navigate to site login page 
    When User enters username 'admin1' 
    And User enters password 'admin1' 
    And User clicks on login button 
    Then User should not be able to log in successfully 

Home.feature

Feature: Welcome Page Verification 

Scenario: Verify the page that comes after login 
    Given Login is successfully done 
    When The page after login successfully appears 
    Then The test is done 

Dans le fichier Home.feature, je Vous devez d'abord exécuter Login.feature puis appeler home.feature. Donc, quand j'exécute la maison de mon test de coureur, il exécutera à son tour la connexion, puis la maison.

RunnerTest.java

import org.junit.runner.RunWith; 

import cucumber.api.CucumberOptions; 
import cucumber.api.junit.Cucumber; 

@RunWith(Cucumber.class) 


@CucumberOptions(strict = false, features = { 
     "src/test/resources/Features/Home.feature", 
      }, glue = { "tests" }, plugin = "html:target/cucumber-reports", format = { "pretty", 
     "json:target/cucumber.json" }, tags = { "[email protected]" }) 

public class RunnerTest {} 

Merci & Cordialement, Megha

Répondre

1

Vous n'avez pas besoin d'appeler le premier long métrage de la deuxième caractéristique. Ce que vous devez faire est d'avoir une étape dans la deuxième fonctionnalité qui peut vous connecter. Il peut le faire en appelant le code que vous avez créé lors de l'implémentation de votre première fonctionnalité.

La première fonctionnalité est quelque chose que vous pourriez écrire lorsque vous implémentez la connexion pour la première fois. En faisant cela, vous les étapes et le code que ces étapes appeler pour vous connecter.

Le genre de code que vous devriez être en train de créer est (désolé tous les exemples sont Ruby je ne fais pas java)

  1. A test de l'entité utilisateur qui connaît son nom, email et mot de passe
  2. une méthode qui peut l'utilisateur à l'utilisateur de test pour vous connecter

Ensuite, vous pouvez écrire une méthode d'aide par exemple

def login_as(user) visit login_path fill_in :email, with: user.email fill_in :password, with: user.password submit_form end

et maintenant dans votre deuxième fonctionnalité, vous pouvez avoir quelque chose comme

Given I am an admin 
When I login 

et mettre en œuvre ces étapes

Given 'I am an admin' do 
    # note create_user is a method you would have created when doing user 
    # registration/creation 
    @i = create_user(type: admin) 
end 

When "I login" do 
    login_as @i 
end 

et quelque part, vous aurez des méthodes d'aide

module StepHelperMethods 
    def create_user 
    ... 
    return user 
    end 

    def login_as(user) 
    ... 
    end 
end 
World StepHelperMethods 

Votre réutilisation de code se produit toujours à un niveau beaucoup plus bas. Idéalement, vous devriez réutiliser les méthodes d'assistance que vous avez créées précédemment pour faire fonctionner d'autres scénarios. Vous pouvez également appeler des étapes directement (étapes imbriquées) mais c'est une très mauvaise chose à faire.

0

Essayez ceci:

Créer une classe RunnerLogin pour appeler le Login.feature.

Dans votre classe étapes, dans la méthode qui implémente l' Given Login is successfully done, faire quelque chose comme:

@Given("^Login is successfully done$") 
public void login_is_successfully_done() { 
    Thread T1 = new Thread(new Thread(() -> { 
     JUnitCore jExecFeature = new JUnitCore(); 
     Result result = jExecFeature.run(RunnerLogin.class); 
    }));     

    T1.start();     
    T1.join(); 
}