mysql - Wie testet ein Java-Unit-Test den Code, der den Datenbankteil ändert?
阿神
阿神 2017-05-17 09:59:03
0
3
648

Für verschiedene Datenbankoperationen müssen entsprechende Unit-Tests geschrieben werden. Es gibt nicht viele Probleme bei der Suche, aber es wird Probleme beim Hinzufügen, Löschen und Ändern geben. Da der Code in einer Produktionsumgebung ausgeführt wird, kann er nicht wirklich geändert werden. CRUD

Jetzt denke ich, dass die Lösung darin besteht, eine andere Datenbank für Entwicklungsdaten zu erstellen, die von der Datenbank in der Produktionsumgebung getrennt ist, aber das ist etwas mühsam.

Bitte sagen Sie mir, wie Unit-Tests von Code, der die Datenbank ändern muss, im realen Entwicklungsprozess des Unternehmens im Allgemeinen durchgeführt werden.

Ich

habe kurz die Einleitung angeschaut, aber ich schien keine gute Lösung gefunden zu haben. Kann jemand Vorschläge machen oder Informationen in diesem Bereich empfehlen? mockito

Hinweis:Ich habe diese Einführung in Unit-Tests in der IBM-Community gesehen:

Unit-Tests sollten einfach auszuführen sein. Die Ausführung von Unit-Tests sollte keine umständlichen Vorgänge wie die Konfiguration erfordern. Wenn der Unit-Test-Code den Zugriff auf Datenbanken, Netzwerke usw. umfasst, handelt es sich bei dem Test nicht um einen echten Unit-Test.

Man kann es so sagen

: Wie sollte der Datenbankcode getestet werden? 单元测试是不允许连接真实的数据库的,所以一切数据库操作都要mock

阿神
阿神

闭关修行中......

Antworte allen(3)
伊谢尔伦

可以使用h2完成单元测试。一般企业级开发都有自己的测试环境的,直接连数据库测试也没太大的问题

为情所困
  1. 你这个不是单元测试Unit Test,是集成测试Integration Test

  2. 不应该使用h2等内存数据库,因为这些数据库的语法、特性和你生产数据库不同,很可能会导致测试失败

  3. 如果你用Spring,则参考Spring官方文档中关于Integration Test章节

phpcn_u1582

用内存数据库来解决该问题。引入内存数据库之后需要在代码中管理ddl脚本和必要的初始化数据dml脚本,
每次跑单元测试时启动内存数据库,刷ddl和dml脚本,然后执行单元测试逻辑,推荐管理数据库脚本工具有flyway和liquibase

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage