0

我是测试新手。我开发了一个模块,它需要大约 14 个变量和输出True/False。对于测试,我使用了“Quickcheck”随机生成的测试用例。

但是 14 个变量是随机生成的(因为手动编写的测试用例数量很大),我不知道真值,所以我怎么能断言验证我的模块的结果。

这是一个工程问题:人们在编写生成测试用例时如何断言?

4

2 回答 2

0

据我所知 - 生成测试中的断言是使用验证器完成的。验证者可以访问生成器、代码和您的输出值。这个stackoverflow帖子提供了一个非常简单的断言验证器 -什么是生成单元测试框架?

于 2015-05-19T07:14:06.667 回答
0

您没有提到您使用的是哪种编程语言。这有帮助吗?defspec 在内部使用 Quickcheck

(ns spec.gen-test.explore
 (:require [clojure.test                    :refer :all]
      [clojure.spec                    :as spec]
      [clojure.test.check.generators   :as gen]
      [clojure.test.check.properties   :as prop :include-macros true]
      [clojure.test.check.clojure-test :refer [defspec]]))
(def languages-set #{"clojure" "haskell" "erlang" "scala" "python"})

(spec/def ::jvm-languages 
(spec/and string?
 languages-set))

;;Generative test case for jvm-languages spec:
(defspec jvm-languages-positive-generative-test
 5
 (prop/for-all [language (gen/elements ["clojure" "haskell" "erlang" 
 "scala" "python"])]
            (println "Testing for language:" language)
            (spec/valid? ::jvm-languages language)))

(defspec jvm-languages-negative-generative-test
  100
  (prop/for-all [language (gen/such-that
                           #(not (contains? languages-set %))
                           (gen/one-of
                             [ gen/string
                               (gen/elements ["" nil])
                               gen/int
                               gen/keyword
                               gen/char-alphanumeric
                               gen/double ]))]
            (println "Testing for language:" language)
            (not (spec/valid? ::jvm-languages language))))
(run-tests)
于 2018-08-03T21:57:48.683 回答