test4requirements 0.1.0.alpha.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,58 @@
1
+ =begin rdoc
2
+ Example with pening, omit...
3
+
4
+ Expected result:
5
+ Requirements overview:
6
+ Requirement ok was successfull tested (OK: test_ok(Examples::Test_requirement_small))
7
+ Requirement pend was unsuccessfull tested (Pending: test_pend(Examples::Test_requirement_small))
8
+ Requirement fail was unsuccessfull tested (Failure: test_fail(Examples::Test_requirement_small))
9
+ Requirement omit was unsuccessfull tested (Omission: test_omit(Examples::Test_requirement_small))
10
+ Requirement no_test was not tested
11
+ {:ok=>true, :pend=>false, :fail=>false, :omit=>false, :no_test=>nil}
12
+
13
+ =end
14
+ gem 'test-unit'#, '= 2.1.1'
15
+
16
+ $:.unshift('../lib')
17
+ require 'test4requirements.rb'
18
+
19
+ $req = Test4requirements::RequirementList.new('Testrequirements', :ok, :pend, :fail, :omit, :no_test )
20
+ #~ $req.log.outputters << Log4r::StdoutOutputter.new('stdout')
21
+
22
+ =begin
23
+ Define a user defined action after test execution.
24
+ =end
25
+ $req.do_after_tests{|reqlist|
26
+ puts reqlist.overview(nil)
27
+ }# if false
28
+
29
+ #
30
+ module Examples
31
+ =begin rdoc
32
+ Test requirements
33
+ =end
34
+ class Test_requirement_small < Test::Unit::TestCase
35
+ #Following requirements exist, and must be tested sucessfull
36
+ requirements $req
37
+
38
+ #Test requirement 1.
39
+ def test_ok()
40
+ assign_requirement(:ok) #this test is testing requirement 1
41
+ assert_equal(2,1+1)
42
+ end
43
+ def test_fail()
44
+ assign_requirement(:fail) #this test is testing requirement 1
45
+ assert_equal(3,1+1)
46
+ end
47
+ def test_pend()
48
+ assign_requirement(:pend) #this test is testing requirement 1
49
+ pend('X')
50
+ end
51
+ def test_omit()
52
+ assign_requirement(:omit) #this test is testing requirement 1
53
+ omit('X')
54
+ end
55
+ end
56
+ end #module Examples
57
+
58
+ __END__
@@ -0,0 +1,35 @@
1
+ =begin rdoc
2
+ Small example as template for quick test.
3
+ =end
4
+ gem 'test-unit'#, '= 2.1.1'
5
+
6
+ $:.unshift('../lib')
7
+ require 'test4requirements.rb'
8
+
9
+ $req = Test4requirements::RequirementList.new('Testrequirements', :req1)
10
+ #~ $req.log.outputters << Log4r::StdoutOutputter.new('stdout')
11
+
12
+ =begin
13
+ Define a user defined action after test execution.
14
+ =end
15
+ $req.do_after_tests{|reqlist|
16
+ puts reqlist.overview(nil)
17
+ }
18
+
19
+ #
20
+ module Examples
21
+ =begin rdoc
22
+ Test requirements
23
+ =end
24
+ class Test_requirement_small < Test::Unit::TestCase
25
+ #Following requirements exist, and must be tested sucessfull
26
+ requirements $req
27
+
28
+ #Test requirement 1.
29
+ def test_1()
30
+ assign_requirement(:req1) #this test is testing requirement 1
31
+ assert_equal(2,1+1)
32
+ assert_equal(2,1+1)
33
+ end
34
+ end
35
+ end #module Examples
@@ -1,62 +1,69 @@
1
- =begin rdoc
2
- Some examples, how you can use test4requirements in your test.
3
-
4
- Expectes Testresults:
5
- req1 successfull
6
- req2 tested, but without success
7
- req3 no test
8
- req4 successfull
9
- =end
10
- gem 'test-unit'#, '= 2.1.1'
11
-
12
- $:.unshift('../lib')
13
- require 'test4requirements.rb'
14
-
15
- $req = Test4requirements::RequirementList.new(:req1,:req2,:req3, :req4)
16
- #~ $req.log.outputters << Log4r::StdoutOutputter.new('stdout')
17
- #Define a user defined action after test execution.
18
- $req.do_after_tests{|reqlist|
19
- puts reqlist.overview(nil)
20
- }
21
-
22
- =begin rdoc
23
- Example code
24
- =end
25
- module Examples
26
- =begin rdoc
27
- Test requirements 1 and 2.
28
- =end
29
- class Test_requirement_1_2 < Test::Unit::TestCase
30
- #Following requirements exist, and must be tested sucessfull
31
- requirements $req
32
-
33
- #Test requirement 1.
34
- def test_1()
35
- assign_requirement(:req1) #this test is testing requirement 1
36
- assert_equal(2,1+1)
37
- end
38
- #Test requirement 2.
39
- def test_2()
40
- assign_requirement(:req2)
41
- assert_equal(3,1+1)
42
- end
43
- #Test requirement 3, but without assignment to a requirement
44
- def test_3()
45
- #no assignment to requirement 3
46
- pend 'pend'
47
- end
48
- end
49
-
50
- =begin rdoc
51
- Test requirement 4.
52
- =end
53
- class Test_requirement_4 < Test::Unit::TestCase
54
- #Following requirements exist, and must be tested sucessfull
55
- requirements $req
56
- #Test requirement 4.
57
- def test_4()
58
- assign_requirement(:req4) #this test is testing requirement 4
59
- assert_equal(2,1+1)
60
- end
61
- end
1
+ =begin rdoc
2
+ Some examples, how you can use test4requirements in your test.
3
+
4
+ The test for the requirements are separated to two classes:
5
+ * Examples::Test_requirement_1_2 and
6
+ * Examples::Test_requirement_4
7
+
8
+
9
+
10
+ Expectes Testresults:
11
+ Requirements overview:
12
+ Requirement req1 was successfull tested (OK: test_1(Examples::Test_requirement_1_2))
13
+ Requirement req2 was unsuccessfull tested (Failure: test_2(Examples::Test_requirement_1_2))
14
+ Requirement req3 was not tested
15
+ Requirement req4 was successfull tested (OK: test_4(Examples::Test_requirement_4))
16
+ {:req1=>true, :req2=>false, :req3=>nil, :req4=>true}
17
+
18
+ =end
19
+ gem 'test-unit'#, '= 2.1.1'
20
+
21
+ $:.unshift('../lib')
22
+ require 'test4requirements.rb'
23
+
24
+ $req = Test4requirements::RequirementList.new('Testrequirements', :req1,:req2,:req3, :req4)
25
+ #~ $req.log.outputters << Log4r::StdoutOutputter.new('stdout')
26
+ #Define a user defined action after test execution.
27
+ $req.do_after_tests{|reqlist|
28
+ puts reqlist.overview(nil)
29
+ }
30
+
31
+ #
32
+ module Examples
33
+ =begin rdoc
34
+ Test requirements 1 and 2.
35
+ =end
36
+ class Test_requirement_1_2 < Test::Unit::TestCase
37
+ #Following requirements exist, and must be tested sucessfull
38
+ requirements $req
39
+
40
+ #Test requirement 1.
41
+ def test_1()
42
+ assign_requirement(:req1) #this test is testing requirement 1
43
+ assert_equal(2,1+1)
44
+ end
45
+ #Test requirement 2.
46
+ def test_2()
47
+ assign_requirement(:req2)
48
+ assert_equal(3,1+1)
49
+ end
50
+ #Test requirement 3, but without assignment to a requirement
51
+ def test_3()
52
+ #no assignment to requirement 3
53
+ pend 'pend'
54
+ end
55
+ end
56
+
57
+ =begin rdoc
58
+ Test requirement 4.
59
+ =end
60
+ class Test_requirement_4 < Test::Unit::TestCase
61
+ #Following requirements exist, and must be tested sucessfull
62
+ requirements $req
63
+ #Test requirement 4.
64
+ def test_4()
65
+ assign_requirement(:req4) #this test is testing requirement 4
66
+ assert_equal(2,1+1)
67
+ end
68
+ end
62
69
  end #module Examples
@@ -1,60 +1,64 @@
1
- =begin rdoc
2
- Example code
3
- =end
4
-
5
- $:.unshift('../lib')
6
- gem 'test-unit'#, '= 2.1.1'
7
-
8
- require 'test4requirements'
9
- require 'test4requirements/shoulda'
10
- #~ require 'shoulda'
11
-
12
- $req = Test4requirements::RequirementList.new(:req1,:req2,:req3, :req4, :req5)
13
- #~ $req.log.outputters << Log4r::StdoutOutputter.new('stdout')
14
-
15
- =begin rdoc
16
- Example code
17
- =end
18
- module Examples
19
- =begin rdoc
20
- Some examples, how you can use test4requirements with shoulda.
21
-
22
- Expected result:
23
-
24
- Requirement req1 was successfull tested (fullfill request 1 (req. of customer X/Examples::Test_with_shoulda))
25
- Requirement req2 was unsuccessfull tested (fullfill request 2 (req. of customer X/Examples::Test_with_shoulda))
26
- Requirement req3 was successfull tested (request_3 (Examples::_with_shoulda/Examples::Test_with_shoulda))
27
- Requirement req4 was successfull tested (request_4 (Examples::_with_shoulda/Examples::Test_with_shoulda))
28
- Requirement req5 was not tested
29
- =end
30
- class Test_with_shoulda < Test::Unit::TestCase
31
- #Following requirements exist, and must be tested sucessfull
32
- requirements $req
33
-
34
- context 'req. of customer X' do
35
- #Add requirement as parameter of should
36
- should 'fullfill request 1', requirement: :req1 do
37
- assert_equal(2,1+1)
38
- end
39
- #add requirement via requirement command
40
- should 'fullfill request 2' do
41
- assign_requirement(:req2) #this test is testing requirement 1
42
- assert_equal(3,1+1)
43
- end
44
- end #context
45
-
46
- #Examples outside a context
47
-
48
- #Add requirement as parameter of should
49
- should 'request_3', requirement: :req3 do
50
- assert_equal(2,1+1)
51
- end
52
-
53
- #add requirement via requirement command
54
- should 'request_4' do
55
- assign_requirement(:req4) #this test is testing requirement 1
56
- assert_equal(2,1+1)
57
- end
58
-
59
- end #MyTest_shoulda
1
+ =begin rdoc
2
+ Example code how to use test4requirements with shoulda.
3
+
4
+ Defines Examples::Test_with_shoulda
5
+
6
+ Expected result:
7
+
8
+ Requirements overview:
9
+ Requirement req1 was successfull tested (OK: fullfill request 1 (req. of customer X/Examples::Test_with_shoulda))
10
+ Requirement req2 was unsuccessfull tested (Failure: fullfill request 2 (req. of customer X/Examples::Test_with_shoulda))
11
+ Requirement req3 was successfull tested (OK: request_3 (Examples::_with_shoulda/Examples::Test_with_shoulda))
12
+ Requirement req4 was successfull tested (OK: request_4 (Examples::_with_shoulda/Examples::Test_with_shoulda))
13
+ Requirement req5 was not tested
14
+
15
+ =end
16
+
17
+ $:.unshift('../lib')
18
+ gem 'test-unit'#, '= 2.1.1'
19
+
20
+ require 'test4requirements'
21
+ require 'test4requirements/shoulda'
22
+ #~ require 'shoulda'
23
+
24
+ $req = Test4requirements::RequirementList.new('Testrequirements', :req1,:req2,:req3, :req4, :req5)
25
+ #~ $req.log.outputters << Log4r::StdoutOutputter.new('stdout')
26
+
27
+ #
28
+ module Examples
29
+ =begin rdoc
30
+ Some examples, how you can use test4requirements with shoulda.
31
+
32
+ Details see examples/example_test4requirements_shoulda.rb
33
+ =end
34
+ class Test_with_shoulda < Test::Unit::TestCase
35
+ #Following requirements exist, and must be tested sucessfull
36
+ requirements $req
37
+
38
+ context 'req. of customer X' do
39
+ #Add requirement as parameter of should
40
+ should 'fullfill request 1', requirement: :req1 do
41
+ assert_equal(2,1+1)
42
+ end
43
+ #add requirement via requirement command
44
+ should 'fullfill request 2' do
45
+ assign_requirement(:req2) #this test is testing requirement 1
46
+ assert_equal(3,1+1)
47
+ end
48
+ end #context
49
+
50
+ #Examples outside a context
51
+
52
+ #Add requirement as parameter of should
53
+ should 'request_3', requirement: :req3 do
54
+ assert_equal(2,1+1)
55
+ end
56
+
57
+ #add requirement via requirement command
58
+ should 'request_4' do
59
+ assign_requirement(:req4) #this test is testing requirement 1
60
+ assert_equal(2,1+1)
61
+ end
62
+
63
+ end #MyTest_shoulda
60
64
  end #module Examples
@@ -0,0 +1,11 @@
1
+ =begin rdoc
2
+ Example code to show how to use the test4requirements-gem.
3
+
4
+ The examples:
5
+ * examples/example_small.rb
6
+ * examples/example_test4requirements.rb
7
+ * examples/example_fail_pend_omit.rb
8
+ * examples/example_test4requirements_shoulda.rb
9
+ =end
10
+ module Examples
11
+ end #module Examples
@@ -1,98 +1,106 @@
1
- =begin rdoc
2
- This gem is based on a
3
- {question at stackoverflow}[http://stackoverflow.com/questions/6958586/are-there-any-good-ruby-testing-traceability-solutions]:
4
-
5
- :: Are there any gems that'll allow me to implement traceability from my tests back to designs/requirements?
6
-
7
- :: i.e.: I want to tag my tests with the name of the requirements they test, and then generate reports of requirements that aren't tested or have failing tests, etc.
8
-
9
- :title:test4requirements Unit-Testing with assignment to requirements
10
-
11
- =Usage
12
- require 'test4requirements.rb'
13
-
14
- ==Define RequirementList and Requirements
15
- You must define your requirements and a RequirementList.
16
-
17
- You can make it with simple keys and without description:
18
- $req = Test4requirements::RequirementList.new(:req1,:req2,:req3, :req4)
19
-
20
- You may set an outputter to a logger:
21
- $req.log.outputters << Log4r::StdoutOutputter.new('stdout')
22
-
23
-
24
- Or you can define an empty list and assign requirements
25
- with description etc.
26
- $req = Test4requirements::RequirementList.new()
27
- $req << Test4requirements::Requirement.new(
28
- description: 'What is required',
29
- reference: 'Customer Requirement, Version 2011-08-02, page 12'
30
- )
31
-
32
- ==Define your test cases
33
-
34
- With Test::Unit::TestCase.requirments you can assign a RequirementList to your tests.
35
- class Test_requirement < Test::Unit::TestCase
36
- #Following requirements exist, and must be tested sucessfull
37
- requirements $req
38
- # ...
39
- end
40
-
41
- A RequirementList can be assigned to multiply TestCase.
42
-
43
- ==Assign tests to requirements
44
- Tests can by assigned to a requirement with
45
- Test::Unit::TestCase#assign_requirement.
46
-
47
- #Test requirement 1.
48
- def test_1()
49
- assign_requirement(:req1) #this test is testing requirement 1
50
- assert_equal(2,1+1)
51
- end
52
-
53
- ==Get the result
54
-
55
- Unit-Test are executed at_exit. Your results are not available before the tests are ready.
56
-
57
- There are three ways to get information.
58
-
59
- ===Standard reporting
60
-
61
- Like the Unit-Test results the requirement-result are written at the end
62
- with Test4requirements::RequirementList#overview
63
-
64
- You can influence the output with Test4requirements::RequirementList#report_type=
65
-
66
- ===Logger
67
- There is a logger. You have access to teh logger with Test4requirements::RequirementList#log.
68
- You can define outputters to the logger, you may log in a file to get more informations.
69
- You can log to STDOUT, but the logging will be mixed with the test output.
70
-
71
- ===User defined actions
72
- Each action must be done at the end of the script.
73
- You may use Test4requirements::RequirementList#do_after_tests to define an
74
- action at the end of the script.
75
-
76
- =end
77
-
78
- gem 'test-unit'
79
- =begin
80
- unittest 2.3.1:
81
- Test::Unit::Assertions uses Encoding#ascii_compatible?
82
- Is not defined in ruby 1.9.1 (at least my installation ;) )
83
- =end
84
- gem 'test-unit', '<= 2.1.1' if RUBY_VERSION == '1.9.1'
85
- require 'test/unit'
86
-
87
- module Test4requirements
88
- VERSION = '0.1.0.alpha.2'
89
- end
90
- require 'log4r'
91
- require_relative 'test4requirements/testcase'
92
- require_relative 'test4requirements/requirement'
93
- require_relative 'test4requirements/requirementlist'
94
-
95
- #Not loaded by default.
96
- #require_relative 'test4requirements/shoulda'
97
-
98
-
1
+ =begin rdoc
2
+ This gem is based on a
3
+ {question at stackoverflow}[http://stackoverflow.com/questions/6958586/are-there-any-good-ruby-testing-traceability-solutions]:
4
+
5
+ :: Are there any gems that'll allow me to implement traceability from my tests back to designs/requirements?
6
+
7
+ :: i.e.: I want to tag my tests with the name of the requirements they test, and then generate reports of requirements that aren't tested or have failing tests, etc.
8
+
9
+ :title:test4requirements Unit-Testing with assignment to requirements
10
+
11
+ =Usage
12
+ require 'test4requirements.rb'
13
+
14
+ ==Define RequirementList and Requirements
15
+ You must define your requirements and a RequirementList.
16
+
17
+ You can make it with simple keys and without description:
18
+ $req = Test4requirements::RequirementList.new(:req1,:req2,:req3, :req4)
19
+
20
+ You may set an outputter to a logger:
21
+ $req.log.outputters << Log4r::StdoutOutputter.new('stdout')
22
+
23
+
24
+ Or you can define an empty list and assign requirements
25
+ with description etc.
26
+ $req = Test4requirements::RequirementList.new()
27
+ $req << Test4requirements::Requirement.new(
28
+ description: 'What is required',
29
+ reference: 'Customer Requirement, Version 2011-08-02, page 12'
30
+ )
31
+
32
+ ==Define your test cases
33
+
34
+ With Test::Unit::TestCase.requirments you can assign a RequirementList to your tests.
35
+ class Test_requirement < Test::Unit::TestCase
36
+ #Following requirements exist, and must be tested sucessfull
37
+ requirements $req
38
+ # ...
39
+ end
40
+
41
+ A RequirementList can be assigned to multiply TestCase.
42
+
43
+ ==Assign tests to requirements
44
+ Tests can by assigned to a requirement with
45
+ Test::Unit::TestCase#assign_requirement.
46
+
47
+ #Test requirement 1.
48
+ def test_1()
49
+ assign_requirement(:req1) #this test is testing requirement 1
50
+ assert_equal(2,1+1)
51
+ end
52
+
53
+ ==Get the result
54
+
55
+ Unit-Test are executed at_exit. Your results are not available before the tests are ready.
56
+
57
+ There are three ways to get information.
58
+
59
+ ===Standard reporting
60
+
61
+ Like the Unit-Test results the requirement-result are written at the end
62
+ with Test4requirements::RequirementList#overview
63
+
64
+ You can influence the output with Test4requirements::RequirementList#report_type=
65
+
66
+ ===Logger
67
+ There is a logger. You have access to teh logger with Test4requirements::RequirementList#log.
68
+ You can define outputters to the logger, you may log in a file to get more informations.
69
+ You can log to STDOUT, but the logging will be mixed with the test output.
70
+
71
+ ===User defined actions
72
+ Each action must be done at the end of the script.
73
+ You may use Test4requirements::RequirementList#do_after_tests to define an
74
+ action at the end of the script.
75
+
76
+
77
+ =Examples
78
+ See examples/test4requirements.rb for some examples.
79
+
80
+ =Known problems
81
+ ==Compatibility
82
+ Ruby 1.9.1 needs test-unit-gem lower equal 2.1.1.
83
+
84
+ =end
85
+
86
+ gem 'test-unit'
87
+ =begin
88
+ unittest 2.3.1:
89
+ Test::Unit::Assertions uses Encoding#ascii_compatible?
90
+ Is not defined in ruby 1.9.1 (at least my installation ;) )
91
+ =end
92
+ gem 'test-unit', '<= 2.1.1' if RUBY_VERSION == '1.9.1'
93
+ require 'test/unit'
94
+
95
+ module Test4requirements
96
+ VERSION = '0.1.0'
97
+ end
98
+ require 'log4r'
99
+ require_relative 'test4requirements/testcase'
100
+ require_relative 'test4requirements/requirement'
101
+ require_relative 'test4requirements/requirementlist'
102
+
103
+ #Not loaded by default.
104
+ #require_relative 'test4requirements/shoulda'
105
+
106
+