web-dev-qa-db-ja.com

CucumberはJUnitとどう違うのですか?

キュウリJunit の違いを誰かが私に説明できますか

私の理解では、どちらもJavaコードのテストに使用されていますが、違いはわかりませんか?

それらは単に同じテストスイートの異なる実装ですか、それとも異なるものをテストすることを目的としていますか?

15
RK . N

統合テストではCucumberがより使用され、代わりに動作テストではJUnitがより使用されると思います。さらに、Cucumber構文はJUnitよりも正確ですが、はるかに複雑です。ここでは、キュウリのテスト例を見ることができます。

package com.c0deattack.cucumberjvmtutorial;

import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
import cucumber.runtime.PendingException;

public class DepositStepDefinitions {

    @Given("^a User has no money in their account$")
    public void a_User_has_no_money_in_their_current_account() {
        User user = new User();
        Account account = new Account();
        user.setAccount(account);
    }

    @When("^£(\\d+) is deposited in to the account$")
    public void £_is_deposited_in_to_the_account(int arg1) {
        // Express the Regexp above with the code you wish you had
        throw new PendingException();
    }

    @Then("^the balance should be £(\\d+)$")
    public void the_balance_should_be_£(int arg1) {
        // Express the Regexp above with the code you wish you had
        throw new PendingException();
    }

    private class User {
        private Account account;

        public void setAccount(Account account) {
            this.account = account;
        }
    }

    private class Account {
    }
}

JUnitはより単純ですが、必ずしもそれほど強力ではないことがわかります。

import static org.junit.Assert.assertEquals;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

public class MyClassTest {

  @Test(expected = IllegalArgumentException.class)
  public void testExceptionIsThrown() {
    MyClass tester = new MyClass();
    tester.multiply(1000, 5);
  }

  @Test
  public void testMultiply() {
    MyClass tester = new MyClass();
    assertEquals("10 x 5 must be 50", 50, tester.multiply(10, 5));
  }
} 

それが役に立てば幸い、

クレメンシオモラレスルーカス。

キュウリは、BDDビヘイビア駆動開発を行うことができる場所です。機能的なユースケースをキュウリのストーリーに変換できるようなものです。その意味で、Cucumberを機能的ユースケースドキュメントのDSLにすることもできます。

反対側のJUnitは、Javaのメソッドとなるユニットテスト用です。そのため、ユニットテスト(まれに)から統合テストまたは完全なシステムテストを使用できます。これが最初のキュウリです。ユニットテストはユニットテストのみになります。

0
manocha_ak