225 lines
11 KiB
HTML
225 lines
11 KiB
HTML
<!DOCTYPE html>
|
||
<html class="no-js" lang="en-GB">
|
||
<head>
|
||
<title>Test Driven Drupal Development with SimpleTest and PHPUnit | Oliver Davies</title>
|
||
|
||
<meta charset="UTF-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
|
||
|
||
<meta property="og:url" content="https://www.oliverdavies.uk/talks/test-driven-drupal-development-with-simpletest-and-phpunit/">
|
||
<meta property="og:title" content="Test Driven Drupal Development with SimpleTest and PHPUnit"/>
|
||
|
||
<meta property="og:description" content="How to write tests and follow TDD for Drupal applications."/>
|
||
|
||
<meta property="og:type" content="website"/>
|
||
|
||
<meta property="og:image" content="https://www.oliverdavies.uk/assets/images/talks/test-driven-drupal-development.png"/>
|
||
<meta property="og:image:type" content="image/png"/>
|
||
<meta property="og:image:width" content="2560"/>
|
||
<meta property="og:image:height" content="1440"/>
|
||
|
||
<meta name="twitter:card" content="summary_large_image"/>
|
||
<meta name="twitter:image:src" content="https://www.oliverdavies.uk/assets/images/talks/test-driven-drupal-development.png">
|
||
<meta name="twitter:creator" content="@opdavies"/>
|
||
<meta name="twitter:title" content="Test Driven Drupal Development with SimpleTest and PHPUnit"/>
|
||
<meta name="twitter:text:description" content="How to write tests and follow TDD for Drupal applications."/>
|
||
<meta name="twitter:site" content="@opdavies"/>
|
||
|
||
|
||
<link rel="stylesheet" href="https://www.oliverdavies.uk/assets/css/main.css">
|
||
|
||
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=57" sizes="57x57">
|
||
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=114" sizes="114x114">
|
||
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=72" sizes="72x72">
|
||
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=144" sizes="144x144">
|
||
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=60" sizes="60x60">
|
||
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=120" sizes="120x120">
|
||
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=76" sizes="76x76">
|
||
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=152" sizes="152x152">
|
||
|
||
<link rel="icon" href="/assets/images/me-precedent.jpg?s=160" sizes="160x160">
|
||
<link rel="icon" href="/assets/images/me-precedent.jpg?s=96" sizes="96x96">
|
||
<link rel="icon" href="/assets/images/me-precedent.jpg?s=32" sizes="32x32">
|
||
<link rel="icon" href="/assets/images/me-precedent.jpg?s=16" sizes="16x16">
|
||
</head>
|
||
<body class="talk talk-full">
|
||
<nav class="navbar navbar-inverse navbar-fixed-top">
|
||
<div class="container">
|
||
<div class="navbar-header">
|
||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
||
<span class="sr-only">Toggle navigation</span>
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
</button>
|
||
<a class="navbar-brand" href="https://www.oliverdavies.uk/">Oliver Davies</a>
|
||
</div>
|
||
|
||
<div id="navbar" class="collapse navbar-collapse" role="navigation">
|
||
<ul class="nav navbar-nav">
|
||
<li class="">
|
||
<a href="/">About</a>
|
||
</li>
|
||
|
||
<li class="">
|
||
<a href="/experience">Experience</a>
|
||
</li>
|
||
|
||
<li class="">
|
||
<a href="/testimonials">Testimonials</a>
|
||
</li>
|
||
|
||
<li class="active">
|
||
<a href="/talks">Talks</a>
|
||
</li>
|
||
|
||
<li class="">
|
||
<a href="/blog">Blog</a>
|
||
</li>
|
||
|
||
<li class="">
|
||
<a href="/contact">Contact</a>
|
||
</li>
|
||
</ul>
|
||
</div> </div>
|
||
</nav>
|
||
|
||
<div class="container">
|
||
<div class="row">
|
||
<main class="col-md-9">
|
||
<h1>Test Driven Drupal Development with SimpleTest and PHPUnit</h1>
|
||
<div class="talk-description">
|
||
<p>Testing is important. Why? It allows developers to add new features and edit and refactor existing code without the worry of adding regressions, reduces the reliance on manual testing to discover bugs, and by taking a test driven approach, your implementation code is leaner as you only write what is needed for your tests to pass.</p>
|
||
|
||
<p>Drupal 7 includes the SimpleTest module for unit and functional testing, whilst Drupal 8 also includes and supports PHPUnit - the defacto PHP testing framework, used by other PHP projects including Symfony and Laravel - making it easier for people to test their code. And with testing being one of the Drupal core gates with tests needing to be included with every new feature or bug fix, and core’s 100% pass rate policy, testing has become an essential skill when contributing to core, or when working on your own projects.</p>
|
||
|
||
<p>In this talk, we’ll cover the methodology and terminology involved with automated testing, and then take a test driven approach to creating a new Drupal module.</p>
|
||
</div>
|
||
|
||
<div class="talk-slides">
|
||
<h2>Slides</h2>
|
||
<div class="presentation">
|
||
<script async class="speakerdeck-embed" data-id="4f12722ed400468b93ebb32a23b3c757" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>
|
||
</div> </div>
|
||
<div class="talk-video">
|
||
<h2>Video</h2>
|
||
<div class="embed-container">
|
||
<iframe width="560" height="315" src="https://www.youtube.com/embed/fdbxXOi2HP4" frameborder="0" allowfullscreen></iframe>
|
||
</div>
|
||
</div>
|
||
<div class="talk-events">
|
||
<h2>Events</h2>
|
||
|
||
|
||
<div class="table-responsive">
|
||
<table class="table table-striped talks-table">
|
||
<thead>
|
||
<tr>
|
||
<th style="width: 20%">Date</th>
|
||
|
||
|
||
<th>Event</th>
|
||
|
||
<th style="width: 10%">Feedback</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div> </main>
|
||
|
||
<div class="col-md-3">
|
||
<div class="panel badges text-center">
|
||
<a href="https://assoc.drupal.org/membership" title="I’m a Drupal Association member." class="is-block">
|
||
<img
|
||
src="//www.oliverdavies.uk/assets/images/badges/da-individual-member.png"
|
||
alt="Drupal Association Individual Member"
|
||
width="200"
|
||
/>
|
||
</a>
|
||
|
||
<div class="is-flex align-items-center">
|
||
<img
|
||
src="//www.oliverdavies.uk/assets/images/badges/acquia-d8-developer.png"
|
||
alt="Acquia Certified Developer - Drupal 8 Exam Badge"
|
||
class="is-2"
|
||
/>
|
||
|
||
<img
|
||
src="//www.oliverdavies.uk/assets/images/badges/acquia-d8-back-end.png"
|
||
alt="Acquia Certified Back End Specialist - Drupal 8 Exam Badge"
|
||
class="is-2"
|
||
/>
|
||
</div>
|
||
|
||
<a href="http://conference.phpnw.org.uk/phpnw17" class="is-block">
|
||
<img src="//www.oliverdavies.uk/assets/images/badges/phpnw17.png" alt="">
|
||
</a>
|
||
</div>
|
||
<div class="availability panel panel-default">
|
||
<div class="panel-heading">Availability</div>
|
||
|
||
<div class="panel-body">
|
||
<p>
|
||
<i class="fa fa-thumbs-o-up text-warning"></i>
|
||
|
||
|
||
Currently have limited part-time capacity
|
||
</p>
|
||
<p>
|
||
<i class="fa fa-thumbs-o-down text-danger"></i>
|
||
|
||
Currently no spare full-time capacity.
|
||
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div> </div>
|
||
<footer class="container">
|
||
<p class="copyright">
|
||
© 2010-2017 Oliver Davies. Built with <a href="https://sculpin.io">Sculpin</a>.
|
||
</p>
|
||
|
||
<div class="meetups">
|
||
<h2>Things that I organise</h2>
|
||
<ul>
|
||
<li class="meetups--drupal-bristol">
|
||
<a href="http://www.drupalbristol.org.uk" title="Drupal Bristol">
|
||
<img
|
||
src="//www.oliverdavies.uk/assets/images/meetups/drupal-bristol.jpeg"
|
||
alt="Drupal Bristol logo"
|
||
>
|
||
</a>
|
||
</li>
|
||
<li class="meetups--drupalcamp-bristol">
|
||
<a href="http://www.drupalcampbristol.co.uk" title="DrupalCamp Bristol">
|
||
<img
|
||
src="//www.oliverdavies.uk/assets/images/meetups/drupalcamp-bristol.png"
|
||
alt="DrupalCamp Bristol logo"
|
||
>
|
||
</a>
|
||
</li>
|
||
<li class="meetups--phpsw">
|
||
<a href="http://phpsw.uk" title="PHPSW">
|
||
<img
|
||
src="//www.oliverdavies.uk/assets/images/meetups/phpsw.jpeg"
|
||
alt="PHPSW logo"
|
||
>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</footer>
|
||
|
||
<script src="https://www.oliverdavies.uk/assets/js/site.js"></script>
|
||
|
||
<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-11967257-1', 'auto'); ga('send', 'pageview');</script>
|
||
|
||
</body>
|
||
</html>
|