我目前正在调查难以进入的领域的单元测试(这是一个非常高级的观点,我知道)并且我遇到了这个问题:存根/模拟或服务虚拟化?
我正在阅读以寻求答案,但我能找到的唯一资源似乎来自SV供应商(他们显然有偏见).
当一个人比另一个人更合适时,有人能想到这些例子,为什么?如果答案是"它取决于",那么请建议为什么/什么.似乎可以通过任何一种方式获得相同的结果 - 这是时间问题(开发)或可用资金(GreenHat等并不便宜!).
提前致谢!
编辑:
检查下面发布的其中一个链接(1)后,我认为这就是我所得到的:
"虚拟服务只是你可以自己创建的测试存根.
虽然您可以编写自己的存根,但是一旦您通过非常简单的行为,在整个软件开发生命周期中模拟您依赖的所有系统的工作量和成本就会变得非常大.服务虚拟化要求自动化,因为模拟和建模可以通过软件的直接观察来进行,而不需要手动编码和调整.否则,您可能会花费尽可能多的时间来维护存根环境,就像构建和测试应用程序功能本身一样."
那么基本上和任何工具一样,是吗?
我想为API创建一个Stub,并希望验证服务器返回的API调用和响应.因为我已经实现了WireMock示例:
import org.junit.Rule;
import org.junit.Test;
import com.github.tomakehurst.wiremock.junit.WireMockRule;
public class MockTestDemo {
private static final int WIREMOCK_PORT = 8080;
@Rule
public WireMockRule wireMockRule = new WireMockRule(WIREMOCK_PORT);
@Test
public void exampleTest() {
stubFor(get(urlEqualTo("/login")).withHeader("Accept", equalTo("application/json"))
.willReturn(aResponse().withStatus(200).withBody("Login Success")
.withStatusMessage("Everything was just fine!"))
.willReturn(okJson("{ \"message\": \"Hello\" }")));
verify(getRequestedFor(urlPathEqualTo("http://localhost:8080/login"))
.withHeader("Content-Type",equalTo("application/json"))); }
}
Run Code Online (Sandbox Code Playgroud)
但是低于错误:
Run Code Online (Sandbox Code Playgroud)com.github.tomakehurst.wiremock.client.VerificationException: Expected at least one request matching: { "urlPath" : "localhosturl/login", "method" : "GET", "headers" : { "Content-Type" : { "equalTo" : "application/json" } } } Requests received: [ ] at …
我是新手,Mockito并试图从这里学习,我已经完成了教程中提到的所有配置(使用 Win-10)。
在环境变量中设置:
Mockito 版本:
<!-- https://mvnrepository.com/artifact/org.mockito/mockito-all -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>2.0.2-beta</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我已经从同一个提到的例子开始了。但是当我运行测试我的类它显示以下异常:
Run Code Online (Sandbox Code Playgroud)Exception in thread "main" java.lang.NoClassDefFoundError: org/mockito/Mockito at com.mockitotest.PortfolioTester.setUp(PortfolioTester.java:23) at com.mockitotest.PortfolioTester.main(PortfolioTester.java:14) Caused by: java.lang.ClassNotFoundException: org.mockito.Mockito at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 2 more
我不知道这里出了什么问题。有人能帮我吗 ?
如果 avirtualservice A在namespace Ausing 中定义,networking.istio.io它如何使用gateway B在另一个命名空间中定义的a namespace B?
谢谢
mocking ×3
java ×2
gateway ×1
istio ×1
junit ×1
kubernetes ×1
mockito ×1
stub ×1
unit-testing ×1
wiremock ×1