我是测试新手。我开发了一个模块,它需要大约14个变量并输出True/False
。为了测试,我使用'Quickcheck'来使用随机生成的测试用例。
然而,14个变量是随机生成的(因为手动编写的测试用例数量很大),我不知道真值,所以我怎么能断言 - 验证模块的结果。
这是一个工程问题:人们在编写生成测试用例时如何断言?
答案 0 :(得分:0)
据我所知 - 生成测试中的断言是使用验证器完成的。验证器可以访问生成器,代码和输出值。在此堆栈溢出后What is a Generative Unit Test Framework?
上提供了一个非常简单的断言验证器答案 1 :(得分: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)