検索
ホームページCMS チュートリアル&#&プレス単体テスト理論 (続き): パート 2

单元测试理论(续):第 2 部分

前回の記事では、WordPress における単体テストの理論について説明し始めました。具体的には、単体テストのテーマとプラグインに関する作業をレビューし、次にコードユニットの議論に移り、それがテストにどのような影響を与えるか、そしてソフトウェア開発のより大きな世界における単体テストをレビューします。

WordPress における単体テストの理論について、問題の特定、アーキテクチャの推進、プロジェクトの文書化などにどのように役立つかという観点から引き続き説明していきます。


問題を見つけて時間を節約する

このシリーズの前の内容を思い出してください。単体テストの従来の方法は次のとおりです。

  • テストを作成し、実行します (失敗することを承知で)
  • このメソッドを通過させる関数を作成します。
  • テストを実行します。テストが失敗した場合は関数の作業を続行し、失敗した場合は次の関数に進みます。

はい、最初のステップは少し独断的です。失敗するとわかっていることを実行するのに時間を無駄にする必要はありません。しかし、要点はわかります。しかし、この特定のテクニックを開発に適用し始めると、コードを書くときに特定のリズムが生まれ、それが全体の目標の一部であることがわかります。

しかし、それは半分にすぎません。実際、単体テストは開発の初期段階で問題を発見するのに役立ちます。

これを理解するには、このアイデアを確認するのが最善です。

実際に WordPress ダッシュボードにログインせずにユーザー アカウントを作成できるようにする WordPress ベースのプロジェクトの機能を開発しているとします。これは、登録、必要な検証、およびパスワードと電子メールを生成するためのコードを処理するページ テンプレートを設定していることを前提としています。

あなたはブラウザにページをロードし、同じ電子メール アドレスを持つユーザー、間違ったパスワードを持つユーザー、不正な文字を含むユーザーなどを作成しようとします。お分かりかと思いますが、合格か不合格かを確認する方法は複数あります。これはとてもひどいです!つまり、ユーザー登録機能を変更するたびに、問題が発生しないように同じ n 回の登録を実行する必要があります。

または、これを処理する一連のテストを作成し、コードが変更されるたびに実行することもできます。

そうです、単体テストの作成には多くの時間がかかることがありますが、コードの単位を変更するたびに節約される時間を見てください。これはそれだけの価値があり、誰かがテストの 1 つの順列をモックするのを忘れたために見逃されていた可能性のある問題を早期 (つまり、運用環境にリリースする前) に発見するのに役立ちます。


自己録音

単体テストを作成するときは、コードが実際に機能することを確認してコードの品質を向上させるだけでなく、基本的に開発者向けのドキュメントも提供します。

製品に組み込まれた機能の単体テストを行う場合は、その機能がどのように動作するか、いつ失敗するか、いつ成功するかに関するドキュメントを提供します。

これにはいくつかの前提条件が含まれます。具体的には、関数とそれに関連するテストに論理的に名前を付けてグループ化しており、各関数を正しくテストしているということです。

PHPUnit を使用すると、WordPress 単体テストで読みやすいアサーションを簡単に実行できます。プロジェクトを構成する関数で使用可能なassertTrue、assertFalse、またはその他のアサーションを宣言するだけです。

上記の例に従うと、空の電子メール アドレスで登録しようとしたときにユーザー登録関数が確実に失敗するように関数を作成できることを意味します。

リーリー

単純な例かもしれませんが、重要な点は変わりません。コードは自己文書化され、明確な単体テストを記述するだけで済みます。


###建築###

おそらく、単体テストの最も過小評価されている利点の 1 つは、プロジェクトのアーキテクチャの推進に役立つことです。通常、テーマまたはプラグインの開発は、次の 2 つの方法のいずれかで開始できます。

関数をリストし、ユーザー インターフェイスを描画し、コードを記述します

    ファイルがどのように連携するかを図にしてコードを記述します
  1. これらは本質的に悪いことではありませんが、弱いと思います (私が共有したい以上のことをしていることを最初に認めます!)。しかし、「コードを書く」というステップには多くの責任が伴います。

これは、長い間コーディングをしている人にとっては非常に馴染み深いものであるため、最終的には「ああ...私はそれを考えていませんでした」と気づくでしょう。

運が良ければ、これは通常、無視したケースを処理するヘルパー メソッドまたは別の条件を作成できることを意味しますが、最悪の場合、クラス全体または関数セット全体を再設計しなければならない可能性があることを意味します。この問題を解決するもの。

単体テストは、完璧ではありませんが、この状況を軽減するのに役立ちます。

最初から、テーマまたはプラグインに提供したいすべての機能のリストがあるという事実を考慮してください。コードはまだ何も書いていませんが、何らかの種類の UI スケッチやクラス図のセットはあるかもしれません。

接下来,您开始编写要编写的测试以测试您的项目。回想一下,单元测试的一部分是将代码分解为尽可能的原子单元,因此您的任务是为每个单元编写单元测试,咳咳

由于单元测试的性质,您本质上会以不同的方式思考您的代码:您正在考虑“编写测试”,而不是“编写代码”,并且因为您必须在更原子的级别上进行思考,您会情不自禁地考虑经常被归入“编写代码”的边缘案例。


代码的语言

作为开发人员,我们非常习惯使用不断强化我们编写代码的约定。我的意思是,我们倾向于提供缩写的变量名称、神秘的函数名称和类名称,这些名称对于您自己或项目团队之外的任何人来说可能没有任何意义。

单元测试不一定是编写更易于阅读的代码的关键,但它可以进一步帮助提供更清晰的函数名称。

回想一下您读过的第一本编程书、您参加的第一堂计算机科学课或者您看到的第一段开源代码,方法名称通常是动词。为什么他们不应该这样?方法是封装代码的方法,做一些事情。但随着我们在项目上工作的时间越来越长,我们变得越来越懒,我们的代码从“register_user_and_email_password()”变成“new_account()”。

显然,前者比后者更清晰,但如果我们致力于高质量的单元测试,并且希望确保我们的单元测试易于阅读,为了使它们易于阅读,我们的函数名称必须易于阅读。

这不是更容易阅读吗:

$this->assertFalse( register_user_and_email_password( '' ) );

而不是这个?

$this->assertFalse( new_account( '' ) );

同样,这也许是一个简单的示例,但原则仍然是:编写良好的单元测试,以帮助自我记录驱动函数语言的代码。


结论

我们已经讨论了单元测试的基础知识以及主要优点,但是我们还没有讨论单元测试带来的缺点,我们甚至还没有考虑如何将其合并到我们的项目中。工作流程。

因此,在下一篇文章中,我们将尝试做到这一点。

以上が単体テスト理論 (続き): パート 2の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
ブログをwordpress.comからwordpress.orgに簡単に移動する方法ブログをwordpress.comからwordpress.orgに簡単に移動する方法Apr 18, 2025 am 11:33 AM

ブログをwordpress.comからwordpress.orgに移動しますか? 多くの初心者はWordPress.comから始めますが、すぐに制限を実現し、自己ホストされたWordPress.orgプラットフォームに切り替えたいと考えています。 このステップバイステップガイドでは、WordPress.comからWordPress.orgにブログを適切に移動する方法を示します。 なぜwordpress.comからwordpress.orgに移行するのですか? WordPress.comを使用すると、誰でもアカウントを作成できます

IFTTT(およびその他)でWordPressとソーシャルメディアを自動化する方法IFTTT(およびその他)でWordPressとソーシャルメディアを自動化する方法Apr 18, 2025 am 11:27 AM

WordPress Webサイトやソーシャルメディアアカウントを自動化する方法をお探しですか? 自動化を使用すると、WordPressのブログ投稿やFacebook、Twitter、LinkedIn、Instagramなどで自動的に共有できます。 この記事では、IFTTT、Zapier、およびUncanny Automatorを使用してWordPressとソーシャルメディアを簡単に自動化する方法を紹介します。 WordPressとソーシャルメディアを自動化する理由 WordPreを自動化します

WordPressでカスタムメニュー項目の制限を修正する方法WordPressでカスタムメニュー項目の制限を修正する方法Apr 18, 2025 am 11:18 AM

ほんの数日前、ユーザーの1人が異常な問題を報告しました。問題は、彼がカスタムメニュー項目の限界に達することです。メニュー項目の制限に到達した後に保存するコンテンツはまったく保存されません。この問題を聞いたことがないので、ローカルインストールで試してみることにしました。 200を超えるメニュー項目が作成され、保存されました。効果はとても良いです。 100個のアイテムをドロップダウンリストに移動し、それらを非常によく保存します。その後、サーバーに関係している必要があることがわかりました。さらなる研究の後、他の多くの人が同じ問題に遭遇したようです。深く掘り下げた後、この問題を強調したTRACチケット(#14134)を見つけました。よく読んでください

WordPressのカスタム分類法にカスタムメタフィールドを追加する方法WordPressのカスタム分類法にカスタムメタフィールドを追加する方法Apr 18, 2025 am 11:11 AM

WordPressのカスタム分類法にカスタムメタフィールドを追加する必要がありますか? カスタム分類法により、カテゴリとタグ以外にコンテンツを整理できます。他のフィールドを追加してそれらを説明するのが便利な場合があります。 この記事では、作成した分類法に他のメタフィールドを追加する方法を紹介します。 カスタムメタフィールドはいつカスタム分類法に追加する必要がありますか? WordPressサイトで新しいコンテンツを作成すると、2つのデフォルトの分類法(カテゴリとタグ)を使用して整理できます。 一部のWebサイトは、カスタム分類法の使用から恩恵を受けます。これらを使用すると、コンテンツを他の方法で並べ替えることができます。 例えば、

Windowsライブライターを使用してWordPressにリモートで公開する方法Windowsライブライターを使用してWordPressにリモートで公開する方法Apr 18, 2025 am 11:02 AM

Windows Live Writerは、デスクトップからWordPressブログに直接投稿することができる多用途のツールです。これは、ブログを更新するためにWordPress管理パネルにログインする必要がないことを意味します。このチュートリアルでは、Windows Live Writerを使用してWordPressブログのデスクトップ公開を有効にする方法を紹介します。 WordPressにWindows Live Writerをセットアップする方法 ステップ1:WordprでWindows Live Writerを使用するには

WordPress Visual Editorで白いテキストと欠落ボタンを修正する方法WordPress Visual Editorで白いテキストと欠落ボタンを修正する方法Apr 18, 2025 am 10:52 AM

最近、ユーザーの1人が非常に奇妙なインストールの問題を報告しました。投稿を書くとき、彼らは彼らが書くものは何も見ることができません。ポストエディターのテキストは白だからです。さらに、すべてのVisual Editorボタンが欠落しており、VisualからHTMLに切り替える機能も機能しません。この記事では、WordPress Visual Editorで白いテキストと欠落したボタンの問題を修正する方法を示します。 初心者に注意:他のWebサイトのスクリーンショットで見られる隠されたボタンを探しているなら、キッチンシンクを探しているかもしれません。 Kitchen Sinkアイコンをクリックして、下線、​​Wordからのコピーなどの他のオプションを表示する必要があります。

WordPressのユーザーメールでアバターを表示する方法WordPressのユーザーメールでアバターを表示する方法Apr 18, 2025 am 10:51 AM

WordPressのユーザーメールでアバターを表示しますか? Gravatarは、ユーザーのメールアドレスをオンラインアバターに接続するネットワークサービスです。 WordPressは、コメントセクションに訪問者のプロフィール写真を自動的に表示しますが、サイトの他の領域に追加することもできます。 この記事では、WordPressのユーザーメールでアバターを表示する方法を紹介します。 グラバタルとは何ですか、なぜそれを表示する必要がありますか? Gravatarは、世界的に認識されているアバターの略で、画像をメールアドレスにリンクできるようになります。 ウェブサイトがサポートしている場合

WordPressのデフォルトのメディアアップロード場所を変更する方法WordPressのデフォルトのメディアアップロード場所を変更する方法Apr 18, 2025 am 10:47 AM

WordPressのデフォルトのメディアアップロード場所を変更しますか? メディアファイルを他のフォルダーに移動すると、Webサイトの速度とパフォーマンスが向上し、バックアップをより速く作成することができます。また、自分に最適な方法でファイルを整理する自由を提供します。 この記事では、WordPressのデフォルトのメディアアップロード場所を変更する方法を紹介します。 デフォルトのメディアアップロード場所を変更する理由 デフォルトでは、WordPressは/wp-content/uploads/folderにすべての画像およびその他のメディアファイルを保存します。 このフォルダーには、さまざまな年と数ヶ月の子供がいます

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール