Currently in C/AL, we have a Dev DB and a Live DB. Developers and Testers code and test in Dev. If careful, multiple developers can be coding is separate objects, testers can test and then move those objects to Live. Yes, I know there are dangers but again if careful, developers can be working on different areas of the code that can be developed, tested, and deployed independently of each other.
I understand that the way to do that with GIT would be something like this. Each developer would create a branch, and develop and test in that branch. Testers may test in that branch as well. Once satisfied, developers will do a Pull Request back into the Main branch and then when it’s time either create a Release Branch and deploy to live from that or deploy to live right from the main branch.
So my question is with AL, how do you test with the databases. The Dev DB has all the Data setup to test with. We can’t just use Cronus data. If a developer creates a branch, and then publishes to the Dev DB. And then another developer creates a branch and publishes to the same Dev DB, they will be overwriting the first developer’s changes in that DB. So it would appear that each developer would need their own DB to test with. But then how do you synchronize the data setups in those DB’s?
I know I can create multiple extensions but that causes different issues.
Anyway, it seems that the “need to test in a database with good data” element to AL really complicates how you would normally test a feature or bug fix with Git, before merging it back to the main branch to be deployed. Am I missing something? Is there a better way of doing this?