Heim  >  Artikel  >  Java  >  Welche Rolle spielt das Junit-Rollback in Springboot?

Welche Rolle spielt das Junit-Rollback in Springboot?

PHPz
PHPznach vorne
2023-05-16 08:28:131095Durchsuche

Junit wird zum Schreiben von Komponententests in Springboot verwendet und die Testergebnisse haben keinen Einfluss auf die Datenbank.

pom führt Abhängigkeiten ein

Wenn es sich um ein von einer IDE generiertes Projekt handelt, wurde dieses Paket standardmäßig eingeführt.

<dependency>
      <groupid>org.springframework.boot</groupid>
      <artifactid>spring-boot-starter-test</artifactid>
      <scope>test</scope>
    </dependency>

Datenbank-Rohdaten

Welche Rolle spielt das Junit-Rollback in Springboot?

Rohdaten

Schreiben von Unit-Tests

package com.mos.quote;

import com.mos.quote.model.Area;
import com.mos.quote.service.IAreaService;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest
public class QuoteApplicationTests {

  @Autowired
  private IAreaService areaService;

  @Test
  public void contextLoads() {
  }

  @Test
  public void testUpdate(){
    Area area = new Area();
    area.setCode("001003");
    area.setName("洛阳市");
    Integer result = areaService.update(area);
    Assert.assertEquals(1, (long)result);
  }

  @Test
  @Transactional
  @Rollback
  public void testUpdate4Rollback(){
    Area area = new Area();
    area.setCode("001001");
    area.setName("郑州市123");
    Integer result = areaService.update(area);
    Assert.assertEquals(1, (long)result);
  }

}

Ergebnisdaten

Welche Rolle spielt das Junit-Rollback in Springboot?

Ergebnisdaten

Fazit

Okay Es ist ersichtlich, dass die Daten des Codes =001001 hat sich nicht geändert und die Daten mit Code=001003 wurden erfolgreich geändert. Rückblickend auf den Code:

@Transactional bedeutet, dass die Methode als Ganzes eine Transaktion ist,

@Rollback bedeutet, dass die Transaktion nach der Ausführung zurückgesetzt wird. Der Standardwert ist true Rollback und false, um kein Rollback durchzuführen.

Diese Annotation unterstützt auch Annotationen zu Klassen. Wenn ja, ist sie für die gesamte Klassenmethode wirksam.

Welche Rolle spielt das Junit-Rollback in Springboot?

Anmerkung zum Unterricht

Das obige ist der detaillierte Inhalt vonWelche Rolle spielt das Junit-Rollback in Springboot?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen