יצירת הסוויץ' ארמי שלך בענף בדיקות Java

בדיקות הקוד מבטיחות מספר נקודות מצוינות בתכנון קוד יעיל, כגון שמירה על הקוד; זה עוזר עם התיעוד והופך את הרפקטורינג ובניית עיצוב/ארכיטקטורה אבולוציונית לקלים יותר. אין ספק בכך, אך מהו ערוץ בדיקה טוב להתחלת פרויקט? הסרטון הזה יסביר את הערוץ המינימום להתחלת הפרויקט שלך עם Java.

הנקודה הראשונה להבנה כאשר אנו מדברים על המינימום היא שאין כלים כסף על ערוץ הבדיקות. בסופו של דבר, נצטרך לכלול או להסיר תלות, במיוחד כשאנו מדברים על קוד לג'נרציה. נתתי את זה, אני אתן את הערוץ האהוב עליי ב-Java, ואני משתמש בו וממליץ כמינימום להתחלה מאפס:

  • JUnit-Jupiter: הגרסה החמישית של JUnit שוברת את השיתוף הקודם; עם זאת, זה שווה את זה כי זה מביא מספר תכונות, בעיקר ליצירת רחבי שיפור מותאמים אישית.

  • Mockito: רשת דוגמא פופולרית מאוד עם Java. הפופולריות והקהילה הענקית מאפשרת מספר רחבי שיפור, כגון עם JUnit-Jupiter.

  • AssertJ: אם אתה אוהב API זורם כמוני, לכן, AssertJ היא ספרייה יוצאת דופן עבורך.

באמצעות פרויקט Maven, אפשר להוסיף את התלות של הספריות האלה:

XML

 

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>${junit.version}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-params</artifactId>
    <version>${junit.version}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>${mockito.verson}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-junit-jupiter</artifactId>
    <version>${mockito.verson}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.assertj</groupId>
    <artifactId>assertj-core</artifactId>
    <version>${assertj.verson}</version>
    <scope>test</scope>
</dependency>

בהקשר של אליפות כדורגל, יש לנו קבוצה שצריכה להכיל אחת עשרה שחקנים, כשהשם של כל אחד חייב להיות ייחודי באליפות. אפשר לבחון במבחנים על זה.

החל מJMockito ובדיקות, אנו צריכים לבדוק את השירות שבו אנו צריכים לבדוק אם השם קיים במסד הנתונים כדי לבצע את ההליך. בשלב זה, אנו לא צריכים ולא רוצים ליצור בדיקה של שילוב.

אנו רוצים להתמקד בעסקים, ולכן איננו רוצים לבדוק את המסד הנתונים או המסוף אלא רק את הקוד שלי. לכן, נדמה את המאגר בשני תרחישים, כשיש שם וכשאין.

באמצעות Mockito השילוב עם JUnit-Jupiter אפשר להזרים רק דומיין באמצעות הערכות. הקוד למטה מציג את הבדיקה באמצעות JMockito, שבו איננו צריכים מסד נתונים או לצאת מהמיקוד כדי לבדוק את העסקים.

Java

 

@ExtendWith(MockitoExtension.class)
class ChampionshipServiceTest {

    @Mock
    private ChampionRepository repository;

    @InjectMocks
    private ChampionshipService service;

    @Test
    public void shouldRegister() {
        Mockito.when(repository.existByName("Bahia")).thenReturn(false);
        Team bahia = Team.of("Bahia");
        service.register(bahia);

        Mockito.verify(repository).existByName("Bahia");
    }
    @Test
    @DisplayName("should return an exception when there is a team with a name")
    public void shouldThrownAnExceptionWhenTeamNameExists() {
        Mockito.when(repository.existByName("Bahia")).thenReturn(true);
        Team bahia = Team.of("Bahia");
        Assertions.assertThrows(IllegalArgumentException.class, () ->
                service.register(bahia));

        Mockito.verify(repository).existByName("Bahia");
    }
}

AssertJ מקלה על האשרות להיות קלות יותר להבנה, הודות ל-API הנושאל הזורמת שהספרייה תומכת בה. אפשר לבדוק קבוצות, מפות, או מופע בודד. כגון, אנו יכולים לאשר הוספת שחקן לקבוצה באמצעות זה.

Java

 

@Test
public void shouldCreatePlayers() {
    Team bahia = Team.of("Bahia");
    bahia.add(Player.of("Neymar", "Santos", 10));
    bahia.add(Player.of("Cristiano Ronaldo", "Lisbon", 10));

    org.assertj.core.api.Assertions.assertThat(bahia.players())
            .hasSize(2)
            .map(Player::name)
            .contains("Neymar", "Cristiano Ronaldo");
}

קחו את זה ועוד מידע בסרטון זה.

קיבוצים:

  • A minimum test stack to start Java

  • למדו עוד על JUnit ולמה זו בחירה טובה

  • למדו על דוגמאות במעקב עם JMockito

  • הפוך את הבדיקה שלך ליפה עם API הנושאל הזורמת של Assert: AssertJ

Source:
https://dzone.com/articles/creating-your-swiss-army-knife-on-java-test-stack