小编Rit*_*ave的帖子

从 KType 创建类实例的正确方法是什么

我有两个可能看起来像这样的课程

class MyClass {
    var myProperty: AnotherClass?
}

class AnotherClass {

}
Run Code Online (Sandbox Code Playgroud)

通过反射,我迭代了 MyClass 的属性,当我发现 aKMutableProperty<*>为空时,我想创建该类的一个实例。现在我正在做这样的事情

val instance = MyClass()
val property = MyClass::myProperty
var subInstance = it.getter.call(instance)
if (subInstance == null) {
    it.setter.call(instance, property.returnType.jvmErasure.createInstance())
}
Run Code Online (Sandbox Code Playgroud)

但这似乎是一个可怕的黑客,需要了解内部结构并使用 Java 魔法而不是纯粹的 Kotlin,有没有合适的方法来做我想做的事?或者这是正确的方法?

reflection jvm kotlin

6
推荐指数
1
解决办法
1185
查看次数

使用多个模拟器的Android检测测试

我有一个Android和Android Wear应用程序,我想在自动化的现实生活场景中端到端地进行测试.我想运行两个模拟器,一个使用Android应用程序,第二个使用Wear应用程序.可能通过使用Espresso框架来控制每个设备并检查它们是否正确地同步它们的数据.乐观地说,我想插入已经存在的Instrumentation Testing框架,与Android Studio进行良好的集成.这甚至可能吗?我在文档中找不到任何内容,也没有在网上搜索.

我认为没有其他方法可以测试我的服务和多线程连接实际上正在做他们应该做的事情.也许有更好的方法?

testing instrumentation android android-espresso wear-os

5
推荐指数
0
解决办法
197
查看次数

如何覆盖Robolectric应用?

我继承了遗留的Android项目并开始添加Robolectric 3和JUnit 4测试用例.遗憾的是,目前主要的Application类无法初始化,因为意大利面条代码和框架在Robolectric中不起作用.我想替换我的应用程序类进行测试.但在我甚至可以更新RuntimeEnviroment.application变量之前,Robolectric崩溃了.有没有办法在Robolectric中禁用清单应用程序创建?

这是我一直在努力做的事情:

@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21, manifest = Config.NONE)
public class TestClass {
    @Before
    public void setUp() {
        RuntimeEnvironment.application = new Application();
    }

    @Test
    public void testFunc() {
        // some testing goes here
    }
}
Run Code Online (Sandbox Code Playgroud)

但由于Parse框架,它失败了:

java.lang.RuntimeException
    at org.robolectric.util.SimpleFuture.run(SimpleFuture.java:61)
    at org.robolectric.shadows.ShadowAsyncTask$2.run(ShadowAsyncTask.java:96)
    at org.robolectric.util.Scheduler.runOrQueueRunnable(Scheduler.java:230)
    at org.robolectric.util.Scheduler.postDelayed(Scheduler.java:85)
    at org.robolectric.util.Scheduler.post(Scheduler.java:72)
    at org.robolectric.shadows.ShadowAsyncTask.execute(ShadowAsyncTask.java:93)
    at android.os.AsyncTask.execute(AsyncTask.java)
    at com.facebook.internal.Utility.loadAppSettingsAsync(Utility.java:771)
    at com.facebook.FacebookSdk.sdkInitialize(FacebookSdk.java:167)
    at com.facebook.FacebookSdk.sdkInitialize(FacebookSdk.java:146)
    at com.parse.FacebookController$FacebookSdkDelegateImpl.initialize(FacebookController.java:187)
    at com.parse.FacebookController.initialize(FacebookController.java:70)
    at com.parse.ParseFacebookUtils.initialize(ParseFacebookUtils.java:108)
    at com.parse.ParseFacebookUtils.initialize(ParseFacebookUtils.java:92)
    at MyApplication.initParse(StrongliftsApplication.java:174)
    at MyApplication.onCreate(StrongliftsApplication.java:112)
    at org.robolectric.internal.ParallelUniverse.setUpApplicationState(ParallelUniverse.java:140)
    at org.robolectric.RobolectricTestRunner.setUpApplicationState(RobolectricTestRunner.java:433) …
Run Code Online (Sandbox Code Playgroud)

java junit android robolectric

3
推荐指数
1
解决办法
873
查看次数

如何通过python中的美丽汤找到html页面中的特定单词?

我想通过html文本中的美味汤找到一个特定单词在网页中出现了多少次?我尝试了这个findAll函数,但只发现特定标签中soup.body.findAll的单词会在body标签中找到特定的单词,但我希望它在html文本中的所有标签中搜索该单词.另外,一旦我找到了这个词,我需要在该词之前和之后创建一个单词列表,有人可以帮我怎么做?谢谢.

python beautifulsoup python-2.7

2
推荐指数
1
解决办法
7358
查看次数