私の理解では、どちらもJavaコードのテストに使用されていますが、違いはわかりませんか?
それらは単に同じテストスイートの異なる実装ですか、それとも異なるものをテストすることを目的としていますか?
統合テストでは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のメソッドとなるユニットテスト用です。そのため、ユニットテスト(まれに)から統合テストまたは完全なシステムテストを使用できます。これが最初のキュウリです。ユニットテストはユニットテストのみになります。