在生產服務器上的每次代碼更新之前,我通過在測試數據庫中插入行來執行phpunit測試。 由於測試數據庫不能反映生產數據庫的內容,因此我想對生產數據庫執行測試。 測試完成後,我想在測試過程中刪除所有創建的行。什麼是實現這一目標的最佳方式? 我無法想象一種完美的方法,無需更改生產數據。Symfony2測試數據庫生產環境
1
A
回答
1
我使用Alexandre Salome在Isolation of tests in Symfony2中描述的方法來隔離我的測試和事務並在最後回滾。這種方法工作得很好,但顯然你需要在生產數據庫上使用它之前仔細測試它!
0
我建議你使用sqlite(默認)進行測試,因爲它更快,你不必擔心他們是否會在生產數據庫上搞點東西。我所做的是每個
EntityTest.php extends TestsHelper.php extends PHPUnit_Framework_TestCase
和設置(),我創建的數據庫和燈具。
我從互聯網上的代碼,它的工作原理。你可能會覺得它很有用。
// class TestsHelper
/**
* @var Symfony\Component\DependencyInjection\Container
*/
protected $container;
public function setUp()
{
// Boot the AppKernel in the test environment and with the debug.
$this->kernel = new \AppKernel('test', true);
$this->kernel->boot();
// Store the container and the entity manager in test case properties
$this->container = $this->kernel->getContainer();
$this->em = $this->container->get('doctrine')->getEntityManager();
// Build the schema for sqlite
$this->generateSchema();
$this->generateFixtures() ;
parent::setUp();
}
public function tearDown()
{
// Shutdown the kernel.
$this->kernel->shutdown();
parent::tearDown();
}
protected function generateSchema()
{
// Get the metadatas of the application to create the schema.
$metadatas = $this->getMetadatas();
if (! empty($metadatas)) {
// Create SchemaTool
/**
* @var \Doctrine\ORM\Tools\SchemaTool
*/
$tool = new SchemaTool($this->em);
// $tool->dropDatabase() ;
$tool->createSchema($metadatas);
} else {
throw new Doctrine\DBAL\Schema\SchemaException('No Metadata Classes to process.');
}
}
/**
* Overwrite this method to get specific metadatas.
*
* @return Array
*/
protected function getMetadatas()
{
return $this->em->getMetadataFactory()->getAllMetadata();
}
而且在generateFixtures(),您將創建他們像往常一樣:
$entity = new MyEntity() ;
$this->em->persist($entity) ;
$this->em->flush() ;
+0
謝謝,但我想對生產數據庫執行測試 –
相關問題
- 1. Tomcat測試和生產環境
- 2. 生產/測試環境容易問題
- 3. 設置測試和生產環境
- 4. 測試和生產環境之間的數據不同
- 5. HttpPostedFileBase null在生產環境中,但沒有測試環境
- 6. 不同於測試和生產環境的開發環境?
- 7. 生產環境中的System.Runtime.Serialization.InvalidDataContractException,而不是測試環境
- 8. 生產環境使用臨時數據庫而不是生產數據庫
- 9. Symfony2上「生產」環境的錯誤
- 10. Symfony2:跳轉到生產環境失敗
- 11. 爲生產和測試環境更改數據庫的設計模式
- 12. 在非生產環境中測試生產配置文件
- 13. 區分Websphere Commerce中的生產環境,臨時環境和測試環境
- 14. 在測試環境中的symfony2 behat:數據庫表格未創建
- 15. Symfony2 Doctrine數據庫投入生產
- 16. 什麼是「測試環境」中的測試過程,已經部署在生產環境中而沒有測試
- 17. 如何使用測試數據庫代理生產數據庫?
- 18. 從測試數據庫更新生產數據庫的腳本
- 19. 在測試數據庫和生產數據庫之間切換?
- 20. Dockerfile生產/建設/調試/測試環境
- 21. 從本地環境到生產環境獲取修改的數據庫
- 22. 將wordpress從測試環境移到生產環境並保留文章
- 23. WordPress的:如何複製您的生產環境創建一個測試環境?
- 24. Tomcat web應用程序生產環境和測試環境的屬性
- 25. Rails生產環境
- 26. Sidekiq僅在生產環境中重試
- 27. Rails在生產環境中調試
- 28. 如何在生產環境中更新數據庫模式?
- 29. 生產環境中的數據庫超時問題
- 30. 爲大型生產數據庫創建開發環境
的偉大工程!謝謝 ! –