小编Jan*_*n96的帖子

如何在单元测试中使用全局变量?

我需要一个在其他测试中在第一次测试中初始化的对象.为了防止代码重复,我想将我在第一次测试中创建的对象保存在全局变量中.这就是我做的:

namespace Project.WebUIV2.Tests {
    [TestClass]
    public class FilmSelectieControllerTests {
        private FilmSelectieController controller;
        [TestMethod]
        public void CanInitializeController() {
            Mock<IRepository<Voorstelling>> mockIRepository1 = new Mock<IRepository<Voorstelling>>();
            Mock<IRepository<Film>> mockIRepository2 = new Mock<IRepository<Film>>();
            Mock<IRepository<Zaal>> mockIRepository3 = new Mock<IRepository<Zaal>>();
            Film film = new Film { titel = "Film" };
            mockIRepository2.Setup(m => m.Add(film));
            var repository1 = mockIRepository1.Object;
            var repository2 = mockIRepository2.Object;
            var repository3 = mockIRepository3.Object;
            var controller = new FilmSelectieController(repository1, repository2, repository3);
            Assert.IsNotNull(controller);
            Assert.IsInstanceOfType(controller, typeof(FilmSelectieController));
            this.controller = controller;

        }

        [TestMethod]
        public void IsCreated() {
            Assert.IsInstanceOfType(controller, typeof(FilmSelectieController));
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c# model-view-controller unit-testing

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

工具栏填满整个屏幕

我是抽屉布局和片段使用的新手。

我使用的教程上与创建活动DrawerLayout。它给了我一个空指针getActionBar(),所以我在活动 main 中添加了一个工具栏并getSupportActionBar()改为使用。

现在看起来工具栏填满了整个屏幕,因为标题在屏幕中间,工具栏的背景也在整个屏幕上。这是xml代码:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!-- Toolbar -->
    <android.support.v7.widget.Toolbar
        android:id="@+id/my_toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:elevation="4dp"
        android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
    <!-- The main content view -->
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FFFFFF" />
    <!-- The navigation drawer -->
    <ListView
        android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#FFFFFF"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

我试过用 56dp 替换 layout_height,我试过用工具栏制作一个单独的布局文件,并将它包含到这个 xml 中,但这没有用。

为什么我的工具栏会填满整个屏幕?

android toolbar drawerlayout

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

当父活动作为参数传递给非活动类中的意图时, onActivityResult 不会被 finish() 调用

我有一个处理问题序列的类。它不会扩展 Activity。类中有这样的方法:

public class QuizMaster {
    public void startQuiz(Activity activity, Model model) {
        //switch - case statement using model

        Intent intent = new Intent(activity, QuestionTextActivity.class)
        activity.startActivityForResult(intent, requestCode);

        //other case statements with other intents
    }
}
Run Code Online (Sandbox Code Playgroud)

当我从工作活动中调用此方法时

mQuizMaster.startQuiz(this, mModel);
Run Code Online (Sandbox Code Playgroud)

我完成()子活动:

Intent returnIntent = new Intent();
returnIntent.putExtra(ARG_SELECTED_CHECKBOX, checkedBox);
setResult(RESULT_CODE, returnIntent);
finish();
Run Code Online (Sandbox Code Playgroud)

它不执行父活动的

@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
    Log.d(LOG_TAG, "OnActivityResult called in SignDetailsActivity. Resultcode is: ");
}
Run Code Online (Sandbox Code Playgroud)

但是当我执行

Intent intent = new Intent(activity, QuestionTextActivity.class)
activity.startActivityForResult(intent, …
Run Code Online (Sandbox Code Playgroud)

android android-intent android-activity onactivityresult

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