- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在使用 Ginkgo(和 Gomega)包对 Go(lang) Rest API 进行单元测试。
我需要使用全局设置,这应该可以通过定义来实现
var _ = BeforeSuite(func() {...})
然后每个规范(具体的 <file>_test.go
)应该在这个全局设置之后运行。不幸的是我不能让这发生......
我的套件文件名为 handlers_suite_test.go
我的第一个测试规范名称是 cartContentsHandler_test.go
.在我看来,Ginkgo 按字母顺序运行测试文件,使得 cartContentsHandler_test.go
运行之前 handlers_suite_test.go
.我放了一些 log()
调用这两个文件,不幸的是他们只是证实了我的发现......
这真是令人不快的情况,因为我根本无法运行我的测试...我需要确保 httptest.Server
和数据库池连接在所有规范之前设置并运行。
您知道如何使 suite_test 作为测试规范之前的第一个文件运行吗?(我已经尝试将套件文件命名为 _suite_test.go
但在这种情况下看起来套件甚至根本没有执行)。
我的 handlers_suite_test.go
:
package handlers_test
import (
"<PROJ>/config"
"<PROJ>/lib"
"<PROJ>/router"
"github.com/gorilla/mux"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"log"
"net/http/httptest"
"os"
"testing"
)
var r *mux.Router
var s *httptest.Server
var serverURL string
func TestHandlers(t *testing.T) {
RegisterFailHandler(Fail)
RunSpecs(t, "Caracal Handlers Suite")
}
var _ = BeforeSuite(func() {
r = router.NewRouter()
s = httptest.NewServer(r)
Expect(len(s.URL)).To(BeNumerically(">", 0))
serverURL = s.URL
log.Print("###" + serverURL + "###\n\n") // ==> THIS PRINTS MUCH LATER AFTER log.Print() in cartContentsHandler_test.go
cwd, _ := os.Getwd()
cfg := config.ReadCfg(cwd + "/../config/config.json").DB
lib.DB = lib.InitDB(cfg)
err := lib.DB.Ping()
Expect(err).NotTo(HaveOccurred())
})
var _ = AfterSuite(func() {
// lib.DB.Close() // ==> this was running into Panic...
s.Close()
})
我的 cartContensHandler_test.go
:
包处理程序_测试
import (
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"log"
"net/http"
"strings"
)
var _ = Describe("Handlers/CartContentsHandler", func() {
Describe("Retrieves all available cart content types", func() {
Context("No query string parameters", func() {
var rdr *strings.Reader
var req *http.Request
var res *http.Response
var err error
var url = serverURL + "/cart-contents"
log.Print(url)
It("Makes a GET request", func() {
rdr = strings.NewReader("")
req, err = http.NewRequest("GET", url, rdr)
Expect(err).NotTo(HaveOccurred())
})
It("retrieves a response", func() {
res, err = http.DefaultClient.Do(req)
Expect(err).NotTo(HaveOccurred())
})
It("Returns HTTP 200 OK", func() {
Expect(res.StatusCode).To(BeNumerically("==", http.StatusOK)) // ==> NOW THIS RETURNS 404 as request is to URL without server part
})
})
})
})
在
ginkgo handlers -cover --v
最佳答案
发生的事情是 BeforeSuite
注册了一个将在测试套件之前执行的函数,而 It
注册了一个将成为测试套件一部分的测试函数。 Describe
和 Context
的回调会立即执行。所以你必须把所有依赖于 BeforeSuite
的东西都放到 It
中。
关于unit-testing - 运行 Ginkgo 测试套件(在运行任何规范之前设置 BeforeSuite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36202934/
我已经尝试过这个:基类 package pages; import org.testng.annotations.BeforeSuite; public class BaseClass { @
我有一个 @BeforeSuite 注释的方法。 public class MySuiteTest { @BeforeSuite public static void doSometh
我一直致力于 TestNG,但我的一些代码存在问题。代码如下: public class Main { public String baseurl ; public WebDriver webdriv
今天我遇到了一个问题,与Gradle中的beforeSuite{}和afterSuite{}有关。我在gradle 4.1的测试任务中添加了beforeSuite{}和afterSuite{},但是每
我看到了很多例子,在每个例子中我都没有看到任何关于 testNG 中 beforeSuite 和 afterSuite 中需要静态的内容 我的场景是我有 MainRunner 和 BaseTest 来
我有以下 Ginkgo测试文件: package foo import ( "log" . "github.com/onsi/ginkgo" ) var _ = BeforeSuite
我在运行套件来设置每个测试所需的属性时尝试访问 ISuite。 代码如下: 公共(public)类 SingleTester{ IAttributes attributes; @BeforeSuite
当使用 groups 运行 TestNg 时,它会跳过 @BeforeClass 和 @BeforeSuite 方法。但是在没有组的情况下运行它会执行@BeforeClass 和@BeforeSuit
我们可以按照下面的方法来初始化测试数据吗?我想实现两点。 需要从文件中初始化/加载测试数据一次,并在所有数据提供者中使用相同的测试数据。考虑在@beforesuite类中实现测试数据加载器。 在 @t
如果满足@BeforeSuite 注解中的条件,是否有办法退出整个测试套件?也许是一种调用@AfterSuite 并绕过整个测试的方法? 我在@BeforeSuite 中调用数据库。如果查询返回任何结
我正在使用 TestNG 运行简单的自动化代码。我的代码行正在打印到控制台日志并正在执行 - 但我无法调试任何行。 是什么阻止我调试我的代码,即使它有效? @BeforeSuite(alwaysRun
我正在运行一个使用 TestNG 作为测试框架的 spring boot 应用程序。我的测试是这样设置的: 父类,负责设置逻辑并处理所有配置内容: @ContextConfiguration(clas
背景:我的目标是编写一个独立运行的 TestNG-Selenium 系统(没有字符串到 Maven 或 Ant 插件;只有 Java)。它必须允许测试用例接受参数,包括浏览器和域 URL。当 Test
我正在使用 Ginkgo(和 Gomega)包对 Go(lang) Rest API 进行单元测试。 我需要使用全局设置,这应该可以通过定义来实现 var _ = BeforeSuite(func()
方法#1:每次测试前登录: 优点: 每个测试都是不同的 session ,如果一个测试导致浏览器崩溃,只有该测试失败,不会影响其他测试。 可以并行测试。 缺点: 如果登录失败(因为 AUT 已关闭或登
我正在使用 Codeception 构建 API 验收测试。 我熟悉那里的单元测试,并且在运行该类的所有测试之前,我在这些类中使用了 setUp 方法来实现所需的所有逻辑。 但是我没有找到类似的验收测
我正在使用 Codeception 构建 API 验收测试。 我熟悉那里的单元测试,并且在运行该类的所有测试之前,我在这些类中使用了 setUp 方法来实现所需的所有逻辑。 但是我没有找到类似的验收测
我是测试自动化领域的新手,如果这是一个愚蠢的问题,请原谅我,但谷歌这次让我失望了。或者至少我读过的任何东西都让我更加困惑。 我在 Eclipse 中使用 JUnit 4 和 Selenium Webd
我可以在没有 @BeforeSuite 注解的情况下运行多个 Chrome 浏览器 session ,但有时我需要分配一些变量或在 @BeforeSuite 中执行某些操作在进入 @BeforeCla
我有一个单元测试在当前格式下运行良好。我的单元测试如下所示: import org.springframework.beans.factory.annotation.Autowired; import
我是一名优秀的程序员,十分优秀!