Home  >  Article  >  Web Front-end  >  What are JavaScript unit tests used for?

What are JavaScript unit tests used for?

青灯夜游
青灯夜游Original
2021-06-22 15:44:182208browse

In JavaScript, unit testing is a test for correctness testing of program modules (the smallest unit of software design). Its goal is to isolate program modules and prove that these individual modules are correct. Unit testing ensures that problems are discovered early in the development process and allows programmers to easily check whether snippets of code are still working properly.

What are JavaScript unit tests used for?

The operating environment of this tutorial: Windows 7 system, JavaScript version 1.8.5, Dell G3 computer.

1. What is unit testing? What is the use?

In computer programming, unit testing (also called module testing) is a test for correctness testing of program modules (the smallest unit of software design). A program unit is the smallest testable component of an application. In procedural programming, a unit is a single program, function, process, etc.; for object-oriented programming, the smallest unit is a method, including methods in base classes (superclasses), abstract classes, or derived classes (subclasses).

Each ideal test case is independent of other cases; in order to isolate modules during testing, test vest programs such as stubs, mocks or fakes are often used. Unit tests are typically written by software developers to ensure that the code they write meets software requirements and follows development goals.

The goal of unit testing is to isolate program modules and prove that these individual modules are correct. Unit testing ensures that problems are discovered early in the development process, so that the program "dies earlier." We should write unit tests for all functions and methods from the early stages of development. Readable unit tests allow programmers to easily check whether code snippets still work properly. Well-designed unit test cases cover all paths to program unit branches and loop conditions. Using this bottom-up testing path, the program module is tested first and then the collection of modules is tested. Once a change causes an error to occur, the error can be quickly located and repaired with the help of unit testing.

2. Current status of JavaScript unit testing

Unit testing is very popular and popular in back-end development, such as JUnit for JAVA developers, etc., while it is used in front-end development Very few. The main reason is that unit testing is more suitable for testing logic code, which is very convenient for back-end programming languages ​​such as JAVA. However, front-end development often requires dealing with UI, and UI-related codes cannot be unit tested. , but it is indeed very troublesome and much more difficult than logic code. This has led to the fact that unit testing has not become popular in front-end development.

However, with the popularity of unit testing, especially the promotion of agile development, many excellent JavaScript unit testing frameworks have emerged, such as QUnit, Jasmine, etc. All of these frameworks can basically test Javascript code very well. Of course, testing the UI code is also more troublesome, but we can test part of the UI code by carefully constructing our test code. However, each framework is not omnipotent. They have their own areas of expertise. Several representative frameworks are selected for introduction below.

3. Commonly used frameworks for unit testing

l QUnit framework

a) Introduction

QUnit is a JavaScript unit testing tool developed by the jQuery team. It is powerful and easy to use. Currently all JQuery code is tested using QUnit, and native JavaScript can also use QUnit.

Originally, John Resig designed QUnit as part of jQuery. In 2008, QUnit had its own name, homepage, and API documentation, and began to allow others to use it for unit testing. But at that time QUnit was still based on jQuery. It wasn't until 2009 that QUnit could run completely independently.

b) Advantages

It is very convenient to use, has a beautiful appearance and complete testing functions (including asynchronous testing);

It is very simple and easy to use. It is currently public There are only 19 APIs;

does not need to rely on any other software packages or frameworks, as long as it can run JS. QUnit itself has only one JS file and CSS file. Of course, it can be integrated with other frameworks such as jQuery if necessary. ;

Not only supports testing in the browser, but also supports testing on backends such as Rhino and node.js.

c) Disadvantages

It has poor automation support and is difficult to integrate with tools such as Ant, Maven or automatic build. It is mainly used for testing in browsers.

l Jasmine Framework

a) Introduction

Jasmine is a well-known JavaScript unit testing framework, it is independent Behavior-driven development framework with clear and easy-to-understand syntax.

Behavior-driven development (BDD): is an agile software development technology that encourages collaboration between developers, QA and non-technical personnel or business participants in software projects. BDD was originally named by Dan North in 2003. It includes extreme programming practices such as acceptance and customer test drive, as a response to test-driven development. In the past few years, it has developed greatly.

The focus of BDD is to gain a clear understanding of expected software behavior through discussions with stakeholders. It extends the test-driven development approach by writing test cases in natural language that are readable by non-programmers. Behavior-driven developers describe the purpose of their code using native language mixed with a unified language in the domain. This allows developers to focus on how the code should be written rather than on technical details, and it also minimizes the need to separate the technical language of code writers from business customers, users, stakeholders, project managers, etc. The cost of translating back and forth between languages.

BDD practices include:

l Establish the long-term goals that different stakeholders want to achieve

l Use feature injection methods to map out the features needed to achieve these goals

l Integrate the stakeholders involved into the implementation process through an outside-in software development approach

l Use examples to describe the behavior of the application or each unit of code

l Provide quick feedback and perform regression testing by automating these examples

l Use "should" to describe the behavior of the software to help clarify the code's responsibilities and answer questions about it Questioning the functionality of software

l Use "ensure" to describe the responsibilities of the software to distinguish the utility of the code itself from the marginal utility brought by other unit (element) codes.

l Use mock as a stand-in for related code modules that have not yet been written

BDD feature injection: A company may have multiple different visions that will bring business benefits, usually including making profits and saving money Or protect money. Once a vision is determined by the development team to be the best vision under current conditions, they will need additional help to successfully realize the vision.

Then identify the main stakeholders of the vision and bring in other stakeholders. Each stakeholder defines what they need to accomplish to achieve the vision. For example, the legal department may require that certain regulations be met. The head of marketing may want to participate in a community of users who will be using the software. Security experts need to ensure that the software is not vulnerable to SQL injection attacks.

Through these goals, the approximate set of topics or features required to achieve these goals will be defined. For example, "Allow users to sort contribution values" or "Transaction auditing". From these themes, user functionality can be determined as well as the first details of the user interface.

b) Advantages

It is a testing framework based on behavior-driven development. Its syntax is very close to natural language, simple, clear, and easy to understand.

It can be easily integrated with Ant, Maven, etc. for automated testing. It can also be easily integrated with continuous integration tools such as Jenkins, and can generate XML documents of test results.

It has a rich API, and it also supports users to extend its API. This is something that few other frameworks can do.

Easy and simple to use, you only need to introduce two js files

Not only supports testing in the browser, but also supports back-end testing such as Rhino and node.js.

It has special support for Ruby language and can be easily integrated into Ruby projects

c) Disadvantages

The test interface in the browser is not as beautiful as QUnit. detailed.

l JsTestDriver

a) Introduction

JsTestDriver is a JavaScript unit testing tool that is easy to integrate with continuous build systems And the ability to run tests on multiple browsers enables TDD-style development with ease. After JsTestDriver is configured in the project, just like junit testing java files, JsTestDriver can directly run the js file to perform unit testing. The JsTestDriver framework itself is a JAVA jar package that needs to be run locally and listen to a port.

b) Advantages

You can test multiple browsers at one time. The method of use is to pass the paths of multiple browsers as parameters when starting the service. Can run in browsers on multiple machines, including mobile devices.

The tests run quickly because there is no need to add the results to the DOM to render them, they can be run in as many browsers at the same time, and the browser will pull the unmodified file from the cache.

No HTML attachment file is required, just provide one or more scripts and test scripts, and the test runner will create an empty file when it runs.

It can be easily integrated with Ant, Maven, etc. for automated testing. It can also be easily integrated with continuous integration tools such as Jenkins, and can generate XML documents of test results.

There are Eclipse and IntelliJ plug-ins, which can be easily tested in these two IDEs, much like JUnit.

Supports other test frameworks and can test test codes written by other test frameworks. For example, there are corresponding plug-ins that can convert QUnit and Jasmine test codes into JsTestDriver test codes.

c)                                                                                                                                                                                                                                                . The generated results are not intuitive enough.

It is a little troublesome to install and use, and it depends on the JAVA environment.

l FireUnit

a) Introduction

FireUnit is a unit testing framework based on Firebug's Javascript. To put it simply, FireUnit adds a tab panel to Firebug and provides some simple JavaScript APIs to record and view tests.

b) Advantages

Simple and easy to use

c) Disadvantages

There are not many functions. The test code is often written in the source code, although it can be viewed in real time The effect is achieved, but the coupling is too strong and difficult to clean

Only runs under Firefox

[Related recommendations: javascript learning tutorial]

The above is the detailed content of What are JavaScript unit tests used for?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn