test4requirements 0.1.0.alpha.2 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
+