How to add an image for unit testing?

I’d take a look at how WordPress has constructed their attachment tests. You’ll find that tests/phpunit/tests/post/attachments.php they use this method:

function _make_attachment( $upload, $parent_post_id = 0 ) {

    $type="";
    if ( !empty($upload['type']) ) {
        $type = $upload['type'];
    } else {
        $mime = wp_check_filetype( $upload['file'] );
        if ($mime)
            $type = $mime['type'];
    }

    $attachment = array(
        'post_title' => basename( $upload['file'] ),
        'post_content' => '',
        'post_type' => 'attachment',
        'post_parent' => $parent_post_id,
        'post_mime_type' => $type,
        'guid' => $upload[ 'url' ],
    );

    // Save the data
    $id = wp_insert_attachment( $attachment, $upload[ 'file' ], $parent_post_id );
    wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $upload['file'] ) );

    return $this->ids[] = $id;

}

They’ve also included sample images with their tests. Here is an example of how they call the _make_attachment() method in one of their tests:

function test_insert_image_no_thumb() {

    // this image is smaller than the thumbnail size so it won't have one
    $filename = ( DIR_TESTDATA.'/images/test-image.jpg' );
    $contents = file_get_contents($filename);

    $upload = wp_upload_bits(basename($filename), null, $contents);
    $this->assertTrue( empty($upload['error']) );

    $id = $this->_make_attachment($upload);

    // ...

So you should be able to use something like that to upload an image for your test. You could supply the image to use yourself, or just use one of those already included.