class RuboCop::Cop::Minitest::NonExecutableTestMethod
end
end
def test_method_should_be_inside_test_class
class FooTest < Minitest::Test
# good
end
def test_method_should_be_inside_test_class
end
class FooTest < Minitest::Test
# bad
@example
“‘Test`” are test classes, in order to prevent false positives.
NOTE: This cop assumes that classes whose superclass name includes the word
Test methods should be defined within a test class to ensure their execution.
Checks for the use of test methods outside of a test class.
def on_def(node)
def on_def(node) return if !test_method?(node) || !use_test_class? return if node.left_siblings.none? { |sibling| possible_test_class?(sibling) } add_offense(node) end
def possible_test_class?(node)
def possible_test_class?(node) node.is_a?(AST::ClassNode) && test_class?(node) && node.parent_class.source.include?('Test') end
def use_test_class?
def use_test_class? root_node = processed_source.ast root_node.each_descendant(:class).any? { |class_node| test_class?(class_node) } end