Let's look at the status of JavaScript unit testing and the testing tools.
1.JsUnit
We are already using it as our Unit test tool.
Advantage:
Can be called by ant build file;
Start the browser to run the test case;
Eclipse plug-in support;
Disadvantages:
Need to start the browser to run test cases;
Does not support the use of JS file to write unit test code: it must be embedded in the HTML file;
It has not been updated for several years;
Attention:
There is a test tool called jsunit (2);
Ant is an open source build tool; it's called Ant because it's small, but it can be used to build large projects;
2.RhinoUnit
Advantage
Ant Drive
Support JS file
Very easy to use
Disadvantages
The simulated JavaScript engine is not good enough to support our code. I tried using it to run "run on Jsunit" test code, but we ran into problems loading our generic JavaScript files
3.crosscheck
Advantage
Can be called by ant build file
Simulate real-World browser behavior
Disadvantages
The emulated JavaScript engine has only a few browser versions
Not updated for two years: Firefox 2.x or 3.x not supported
4.jsspec
Advantage
Run on the Real browser
Disadvantages
JavaScript only frames, cannot be called by ant build file
5. Jspec
Advantage
Run on the Real browser
Disadvantages
Seemingly unsupported by our code, I tried to run the "run on Jsunit" test code, but encountered problems loading our generic JavaScript files
JavaScript only frames, cannot be called by ant build file
6. Screw.unit
Advantage
Running in a real browser
Disadvantages
JavaScript only frames, cannot be called by ant build file
Note: We've used it, but it's smaller than Jsspec and Jspec.
So Jsunit is our only option. Note that it is already in use in other components. It's not perfect, it doesn't provide a convenient way to implement test-driven Development (TDD):
It does not provide a simple, integrated way to run unit tests
It forces you to write unit tests in HTML files instead of JS files
It forces you to install a local Jsunit framework to avoid the path of hard coded JS unit test files
As a result, when you are in "test-driven development" JavaScript, you have to switch back and forth between your IDE and the browser you want to test. It's doable, but I don't think it's efficient (I might be wrong here).
Of course I'm still looking for a better JavaScript editor or an Eclipse plug-in that can easily be referenced and refactored. Part of the WTP project is called the JSTD plugin, but I don't have enough experience to comment on it.
Summing up, I don't think we have the tools to fully implement "TDD". We can TOD (for test-oriented development), but I haven't found anything that will allow us to write JavaScript as efficiently as we write Java. Again, the ideal solution will be similar to JUnit.
What unit test tool are you using?
The answer to the highest votes comes from Gregers
1. Buster.js
Similar to the server/client concept of jstestdriver (which will be discussed later). Except that the server is implemented using Node.js, not java. And the API follows the best practices of JS.
A browser JavaScript test tool library. Automated browser test (think of Jstestdriver bar), Qunit style static HTML page test, can be in the browser without interface (Phantomjs,jsdom ... ) and other browsers in the test. Look at the overview of it!
A Node.js test tool library. You have the same test case library, the assertion library, and so on. This is good for code that supports both browsers and Node.js. Use Buster.js to write your test cases and then run them in Node.js and real browsers.
Screenshot: Buster.js Getting Started (2:45)
Advantage:
Using Node.js, compatible Win/os x/linux
Can be run in a normal browser or without an interface Phantomjs (FAST)
Run multiple clients at once
Support Nodejs Test
No need to run server/clients on the development machine (ie not required)
Run tests on the command line (can be integrated by Ant/maven) write xunit or BDD-style tests
Supports multiple JavaScript test frameworks
Support for delaying testing rather than commenting out the code
Built in Sinonjs
Run tests automatically while saving
Agent cross-domain request:
Can be extended to include other test frameworks (built in Jstestdriver)
Plus your own assertion/rejection
Reports (Xunit XML, traditional dots, specification, tap, teamcity and more built in)
Customize or replace HTML that runs in a browser test
TextMate and Emacs Integration
Disadvantages:
Still in beta, there are a lot of bugs.
There are no eclipse or IntelliJ plug-ins.
Do not organize results in a os/browser/version manner like testswarm. Note: It will, but only print the browser name and version in the test results
There's no historical support like Testswarm, and I don't see the test results.
Note: When you need to provide an independent CI service for Buster.js, Testswarm can also serve as a continuous integration (CI) service. However, Buster.js can output xunit XML reports, so it can be easily integrated into CI services such as Hudson,bamboo.
2. Testswarm
Testswarm is a distributed JavaScript test tool created by John Resig (jquery author). Mainly for open source JavaScript project testing, but Testswarm is also open source, so you can configure yourself with a testswarm server for enterprise testing. But this may require a lot of changes.
Advantage
Continuous Integration Services for JavaScript
Support for all major browsers and operating systems
Run multiple clients at once
No need to run server/client on the development machine (ie not required)
When you submit something (or modify a script), run the test automatically on all clients
Show Test history results for each submission
Supports multiple JavaScript test frameworks
There are results for the operating system and browser versions
Crowdsource to test in a multitude of browsers
Disadvantages:
Unable to interrupt the test through Ant/maven
Failed to know test case before committing
No IDE plugin support
http://ejohn.org/blog/javascript-testing-does-not-scale/
Testswarm's Architecture:
3. Jstestdriver
Some Google engineers have also started the development of a distributed JavaScript tool, Jstestdriver. Like Testswarm, it has a server and the client is connected to the server. But it also supports running from the command line and has Eclipse and IntelliJ Plug-ins!
Advantage:
Support for all major browsers and operating systems
Run multiple clients at once
No need to run server/client on the development machine (ie not required)
Can run tests at the command Line (jar) (can be integrated by Ant/maven)
Eclipse Plug-in
IntelliJ Plugin
Supports multiple JavaScript test frameworks
Disadvantages:
The operating system or browser version is not displayed. Only the browser name, but it will print the version in the test results
Test history results are not supported
Project is not very active, update slow
Jstestdriver's running overview is as follows: Jstestdriver
Eclipse Plug-in screenshot: Jstestdriver for Eclipse
Simple Introduction to Video: Http://www.youtube.com/watch?v=V4wYrR6t5gE
4. YUI Yeti
Yahoo has now run the test Javascript,yeti on its own services. Build based on Node.js. It can run your existing yui-test and support a variety of browsers. Since it can be run from the command line, I guess it's similar to Jstestdriver.
Posted on August 25, 2010:
If you are familiar with it, please provide me with more information:
Project Address: http://yuilibrary.com/projects/yeti/
5. Jasmine
This test tool may cause attention to developers who are "familiar with Ruby/ruby on rails." Its syntax is based on tests that Rspec,rspec is used for rails projects.
Jasmine is a JavaScript test framework for behavioral-driven Development (BDD). It does not rely on any other JavaScript framework. It also does not rely on the DOM.
If you are familiar with it, please provide me with more information:
Project home: https://github.com/pivotal/jasmine/
6. Qunit
Qunit focuses on JavaScript testing on browsers, providing as much convenience as possible. Introduction from the official website:
Qunit is a powerful, easy-to-use JavaScript unit Test Library. jquery, the jquery UI, and the jquery mobile project all use it. It can also be used to test common JavaScript code.
Qunit and Testswarm have some of the same history:
Qunit is part of jquery and is developed by John Resig. In 2008, it had its own home page, name, and API documentation, allowing others to use it as a unit test. It was based on jquery at the time. A refactoring that solved this problem in the 2009 is now Qunit completely independent of jquery. Qunit's assertion method follows the COMMONJS unit Test standard, which is also partly influenced by Qunit.
Project home: http://qunitjs.com/
7. Sinon
Sinon.js is another great test tool. It was developed by Christian Johansen, author of the book "Test-driven JavaScript Development". He thinks it's the best.
Provides independent spies,stubs and mocks for JavaScript. Without any dependencies, you can work with any unit test framework.
http://tddjs.com/
Note: This article is compiled by Zhou Minhming from the stack Overflow with the same name, and other replies can be found in StackOverflow original post
Article Source: Bole Online