Erlang Central

Difference between revisions of "Testing with Test Helper"

From ErlangCentral Wiki

(Create Page)
 
m
Line 13: Line 13:
  
 
Here is the quick recipe:
 
Here is the quick recipe:
 +
# Generate the skeleton in Emacs
 +
#
  
1. In [[Emacs]] select Erlang|Skeletons|Erlang test suite TS Frontend:
+
===Generate the skeleton===
 +
In [[Emacs]] select Erlang|Skeletons|Erlang test suite TS Frontend:
  
 
[[Image:testhelper_step_1.png]]
 
[[Image:testhelper_step_1.png]]
  
 +
This will fill in your current module with a basic skeleton. If we remove all the comments, the test should look like this:
 +
 +
-module(simple_test_SUITE).
 +
 +
-compile(export_all).
 +
-include("test_server/include/test_server.hrl").
 +
 +
init_per_suite(Config) ->
 +
  Config.
 +
 +
end_per_suite(_Config) ->
 +
  ok.
 +
 +
init_per_testcase(_TestCase, Config) ->
 +
  Config.
 +
 +
end_per_testcase(_TestCase, _Config) ->
 +
  ok.
 +
 +
all(doc) ->
 +
  ["This test links to all tests in this suite"];
 +
 +
all(suite) ->
 +
  [test_case].
 +
 +
test_case(doc) ->
 +
  ["Describe the main purpose of test case"];
 +
 +
test_case(suite) ->
 +
  [];
 +
 +
test_case(Config) when is_list(Config) ->
 +
  ok.
 +
===Compile the suite===
 +
 +
===Running all the tests in the new suite===
 +
In order to run our new test suite, we simply call testhelper like this:
 +
 +
(gdb_rdbms@wyemac)1> c("simple_test_SUITE",[debug_info]).
 +
{ok,simple_test_SUITE}
 +
(gdb_rdbms@wyemac)2> testhelper:run(simple_test_SUITE,all).
 +
****************************************************
 +
Running simple_test_SUITE:init_per_suite (runtime version) Case all
 +
DataDir = "/Users/rvg/svn/modules/common/test/simple_test_SUITE_data/"
 +
Config = [{data_dir,"./simple_test_SUITE_data/"},
 +
          {priv_dir,"./simple_test_SUITE_priv/"}]
 +
 +
 +
====================Start of Test test_case======================
 +
====================End of Test test_case========================
 +
Running simple_test_SUITE:end_per_suite (runtime version)
 +
****************************************************
 +
1 tests passed
 +
0 tests failed
 +
ok
  
==Running all the tests in the suite==
 
In order to run our new test suite, we
 
  
  
 
==Download==
 
==Download==
 
[http://www.patternmatched.com/download/testhelper.zip testhelper.zip]
 
[http://www.patternmatched.com/download/testhelper.zip testhelper.zip]

Revision as of 10:21, 2 September 2006

Contents

Author

Rudolph van Graan

Article

For this you can use the erlang test server. It's home page is http://www.erlang.org/project/test_server/index.html. It is quite an involved process getting it to work, as you can find on this page.

In order to speed up the testing process and to fit in with a philosophy of test as you go, we created File:Testhelper.erl. It makes it easy to build test suites that are compatible with the Test Server, but still allows you to run your tests in Emacs.

Writing a test suite

The basic steps are exactly the same as for Test Server. For details, look at Writing Test Suites

Here is the quick recipe:

  1. Generate the skeleton in Emacs

Generate the skeleton

In Emacs select Erlang|Skeletons|Erlang test suite TS Frontend:

Testhelper step 1.png

This will fill in your current module with a basic skeleton. If we remove all the comments, the test should look like this:

-module(simple_test_SUITE).

-compile(export_all).
-include("test_server/include/test_server.hrl").

init_per_suite(Config) ->
  Config.

end_per_suite(_Config) ->
  ok.

init_per_testcase(_TestCase, Config) ->
  Config.

end_per_testcase(_TestCase, _Config) ->
  ok.

all(doc) -> 
  ["This test links to all tests in this suite"];

all(suite) -> 
  [test_case].

test_case(doc) -> 
  ["Describe the main purpose of test case"];

test_case(suite) -> 
  [];

test_case(Config) when is_list(Config) -> 
  ok.

Compile the suite

Running all the tests in the new suite

In order to run our new test suite, we simply call testhelper like this:

(gdb_rdbms@wyemac)1> c("simple_test_SUITE",[debug_info]).
{ok,simple_test_SUITE}
(gdb_rdbms@wyemac)2> testhelper:run(simple_test_SUITE,all).
****************************************************
Running simple_test_SUITE:init_per_suite (runtime version) Case all 
DataDir = "/Users/rvg/svn/modules/common/test/simple_test_SUITE_data/" 
Config = [{data_dir,"./simple_test_SUITE_data/"},
          {priv_dir,"./simple_test_SUITE_priv/"}]


====================Start of Test test_case======================
====================End of Test test_case========================
Running simple_test_SUITE:end_per_suite (runtime version)
****************************************************
1 tests passed
0 tests failed
ok


Download

testhelper.zip