下面是我的html" target="_blank">代码:
// WeatherDemo.java:
package com.abc;
public class WeatherDemo {
public String getForecast() {
// Get the high remperature for today, and return back to the caller one of these values:
// cold, mild, or hot
// cold will be returned if the high temp is forecast to be less than 60.
// hot will be returned if the high temp is forecast to be more than 79.
// Otherwise, mild will be returned (this indicates a high temp in the 60s or 70s).
int highTemp = getHighTemp();
if (highTemp < 60)
return("cold");
if (highTemp > 79)
return("hot");
return("mild");
}
public int getHighTemp() {
// Because this is a demo, we don't have access to any source (web service, DB, etc.) to get the high temp.
// Just hard code a value here, but remember that if this were a real application, we would be dynamically
// retrieving the day's high temperature from some external source.
int highTemp = 32;
return(highTemp);
}
}
===================================================================================================
// TestWeatherDemo.java:
package com.abc;
import static org.mockito.Mockito.*;
import static org.junit.Assert.*;
import org.junit.Test;
import org.mockito.Mockito;
public class TestWeatherDemo {
@Test
public void testWeatherReport() {
WeatherDemo testMockito = Mockito.mock(WeatherDemo.class);
WeatherDemo testJUnit = new WeatherDemo();
when(testMockito.getHighTemp()).thenReturn(90);
assertEquals("hot", testJUnit.getForecast());
}
}
===================================================================================================
Mockito背后的全部思想难道不是我可以模拟一个方法,并告诉它确切地返回什么,以消除外部依赖关系吗?如果从getForecast()调用getHightTemp()不会返回90,我就看不出Mockito的用途了。我在这里漏掉了什么?谢谢你的帮助和启迪。
账单
在您的示例中,TestMockito
和TestJunit
是不同的对象-您在TestMockito
上模拟了方法,但是TestJunit
有方法的实际实现,返回32。
您可能需要考虑将代码分成两个类,然后可以使gethightemp()
中的代码成为主类的依赖项。这是在测试中提供模拟和实际运行代码的真正实现的地方。(也许通过某种依赖注入)
以这种方式构建的代码似乎遵循了单一责任原则--这样做的好处是,如果您需要更改天气数据供应商,它将使您的工作变得更加容易。我认为,当您说“因为这是一个外部资源,所以我的Junit没有通过隔离测试”时,您无论如何都是沿着这条线走的。
我尝试过在IntelliJ的project structure下通过库添加JAR,并只在根目录下的libs文件夹中添加JAR。首先,我提供了绝对路径,但后来我将其更改为${basedir},因为绝对路径没有映射为docker容器上的卷。有什么方法可以将外部jar与项目jar打包,以便在docker容器中使用它?
我需要在我的maven项目中添加大约15个罐子,它在远程和中央存储库中都不可用。 然而,我实现了以下目标:, > 在我的项目路径中添加了jars(\src\lib) 将pom更改如下, 我的问题是: 我是否需要像上面那样分别对所有15个JAR重复它,或者我们有任何其他方法来绑定这些JAR并将其作为一个依赖路径? Maven在这里讨论了同样的事情:指向多个JAR的系统依赖性。但我想知道我是否能得到更
如果我正在创建一个带有如下头文件的静态库: 在我自己的项目中,我可以告诉编译器(在我的例子中是Visual Studio)在哪里查找SomeHeaderFile.h。但是,我不希望我的用户关心这一点--他们应该能够包含我的头,而不必通知编译器SomeHeaderFile.h的位置。 这类情况通常如何处理?
问题内容: 我有以下两个javascript函数: 1 2 我想将它们放在外部“ .js”文件中 1 2 调用这些函数的正确语法是什么? 问题答案: 像这样的代码 希望对您有帮助。…谢谢
如您所知,Maven使用存储库的概念进行依赖关系管理。 但是,如果在任何远程存储库和中央存储库中都没有依赖项,会发生什么? Maven使用External Dependency概念为这种情况提供答案。 例如,让我们对“创建Java项目”一章中创建的项目进行以下更改。 将lib文件夹添加到src文件夹。 将任何jar复制到lib文件夹中。 我们使用了ldapjdk.jar ,它是LDAP操作的帮助库
为类A编写单元测试时如何模拟外部依赖关系。当我以上述方式模拟依赖关系时,“a”的值没有按预期分配给100。