簡體   English   中英

對數據庫中條目的創建進行單元測試

[英]Unit testing the creation of an entry in the database

我想為服務編寫一個簡單的單元測試。 這是我要統一測試的服務中的方法。

@Log4j
@Service
public class Service {

     @Autowired
     private Repository repository;

    public JpaRecord create(JpaRecord jpaRecord) {
        return repository.save(jpaRecord);
    }
}

此方法只是在數據庫中創建一個新條目。

這是 JpaRecord:

@Data
@Entity
@Table(name = "TEST", schema = "TEST")
public class JpaRecord implements Serializable {
    private static final long serialVersionUID = 1L;

    JpaRecord() {
        // default constructor
    }

    public JpaRecord(
            String name,
            Date createdAt,
            Blob file
    ) {
        this.name = name;
        this.createdAt = createdAt;
        this.file = file;
    }

    @Id
    @Column(name = "ID", nullable = false)
    @GeneratedValue(strategy = GenerationType.SEQUENCE,
            generator = "TEST_SEQx")
    @SequenceGenerator(
            sequenceName = "TEST_SEQ", allocationSize = 1,
            name = "TEST_SEQx")
    private Long id;

    @Column(name = "NAME")
    private String name;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "CREATED_AT")
    private Date createdAt;

    @Lob
    @Column(name = "FILE")
    private Blob file;
}

id不應該是 null,所有其他條目都可以是 null。我寫這個測試是為了檢查數據庫條目是否不是 null,這意味着它已創建。

public class ServiceTest {

    @Autowired
    private Service Service;

    @Autowired
    private JpaRecord JpaRecord;

    @Before
    public void setUp(){

    }

    @Test
    public void testCreateWhenNull(){
        // prepare data
        JpaRecord = new JpaRecord("testProject", new Date(),null);
        // run

        // test with assert
        Assert.assertNotNull(Service.create(JpaRecord));
    }

}

然后我得到一個 java.lang.NullPointerException。 我真的很感激任何關於我應該如何處理問題以對其進行單元測試的建議。 這是我第一次進行單元測試,我想從一個簡單的 null 檢查開始。

您缺少一些配置相關的 spring 啟動 JUnit 在 class 級別進行測試,這就是您獲得 Nullpointer Exception 的原因。請閱讀以下鏈接參考鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM