Kotlin可以自动为主构造函数参数创建getter(这很棒),默认情况下,所有这些getter都是final (而不是open)。我有一个类(在Kotlin中): open class SongCategory(val id: Long,
val type: SongCategoryType,
val name: String? = null,
var displayName: String? = null,
因此,在对kotlin类进行了大量的试验和错误之后,我发现在java中相同的代码是可测试的,但使用kotlin是不可测试的。
@RunWith(MockitoJUnitRunner.class)
public class TestStuff {
@Mock
B b;
@Test
public void testStuff(){
A a = new A(b);
Mockito.when(b.provideValue()).thenReturn("");
a.doStuff();
}
}
我有一个包含公共静态方法getProduct(String name)的类。
public class ProductManager {
public static Product getProduct(String name) {
Product prod = findProduct(name);
return prod;
}
}
另一个CustomerService类使用上面的ProductManager
public class CustomerService {
...
public void handleProduct() {
我开始学习Kotlin和Mockito,所以我编写了一个简单的模块来测试它。
AccountData_K.kt:
open class AccountData_K {
var isLogin: Boolean = false
var userName: String? = null
fun changeLogin() : Boolean {
return !isLogin
}
}
AccountDataMockTest_K.kt:
class AccountDataMockTest_K {
@Mock
val accountData = Acc
我在用Kotlin做开发。当我到达官方Android教程的片段部分时,我看到了supportFragmentManager。它可以作为Kotlin中的变量使用,而在java中,我们可以调用它的等效方法getSupportFragmentManager()。
我想知道supportFragmentManager变量是在哪里定义的,因为我看不到任何类似于该名称的变量声明,但是单击该变量将我带到fragmentActivity.java类中的以下方法。
/**
* Return the FragmentManager for interacting with fragments associate
我正在测试一个Spring服务,我想使用模拟会话来创建,这样我就不必连接到实际的数据库。
不幸的是:
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call on a mock'.
TweetServiceTest.java
Session session;
TweetService tweetService = new TweetServiceImpl();
@Before
pub
我在user.json文件夹中有一个名为src/main/resources的文件。
在我将应用程序打包到jar文件中之后,使用gradle执行命令
gradle distTar
我无法打开文件并得到这样的异常
Caused by: java.io.FileNotFoundException: file:/app/api-latest/lib/api-latest.jar!/user.json (No such file or directory)
我现在尝试以三种方式访问文件,所有这些都导致了一个FileNotFoundException:
1:
fun readFileFromRes
我有一个简单的控制器类
@RestController
open class MyController() {
@Autowired
lateinit var myInterface: MyInterface
@GetMapping(value = ["/v1/call-Api"], produces = ["application/json"])
fun getData():Response{
callFx()
/// Here I have logic
}
fun callFx():String{
return myInter
我有一个非常简单的测试用例,它使用了Mockito和Spring测试框架。当我这样做的时候
when(pcUserService.read("1")).thenReturn(pcUser);
我得到了这个例外。
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call on a mock'.
For example:
when(mock.getArticles()
我的MainActivity中有一个方法,我想模拟A实例:
public void some_method() {
A a = new A();
....
}
因此,我尝试在MainActivity类中创建一个方法
public A createA(){return new A()}
然后some_method就变成了
public void some_method() {
A a = createA();
....
}
我试过了
MainActivity mainActivitySpy = (MainActivi
我在试着测试一个计算年龄的类。计算年龄的方法如下所示:
public static int getAge(LocalDate birthdate) {
LocalDate today = new LocalDate();
Period period = new Period(birthdate, today, PeriodType.yearMonthDay());
return period.getYears();
}
由于我希望JUnit与时间无关,所以我希望today变量永远是2016年1月1日。为了做到这一点,我试着走Mockito.when路线,但遇到了麻烦。
在我的Gradle项目中,我可以使用dependencies条目声明一个implementation块,没有问题。然而,当我试图声明类似的内容时,我会得到一个错误:
allprojects {
dependencies {
implementation("...")
}
}
我所犯的错误:
Could not find method implementation() for arguments [org.mockito:mockito-core:2.25.0]
on object of type org.gradle.api.internal.a
我经常在Mockito测试中获得kotlin.UninitializedPropertyAccessException: lateinit property xxx has not been initialized。但是这个应用程序运行得很好。注:我不想把推荐人注入活动中。提前感谢!
这是我的活动:
class CreateAccountActivity : AppCompatActivity(), CreateAccountView {
private var presenter: CreateAccountPresenter? = null
override fun onCreate(
我试图模拟一个新的对象创建
public class MyServiceTest {
MyClass myClass;
myClass = Mockito.mock(MyClass.class);
Mockito.when(new MyClass()).thenReturn(myClass);
}
错误:
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call
我试图模拟具有Integer属性的bean。我正在测试的方法检查该属性的初始值是否为空,是否为空。根据mockito医生的说法:
默认情况下,对于所有返回值的方法,模拟返回空集合或适当的原语/原语包装值(例如: 0,false,.对于整数,布尔/布尔,.)
因此mockito将我的属性设置为0,而我的测试失败。是否有一种方法来覆盖此默认行为?
编辑
杰夫·鲍曼给出了一个很好的答案,我想听从他的建议.但是我不知道怎么做。下面是我正在尝试测试的一些方法:
public class ViewBeanBuilder {
@Inject
private ViewBean vie